发布网友 发布时间:2024-10-21 16:25
共1个回答
热心网友 时间:2024-11-20 04:01
导读:很多朋友问到关于django2.0表单怎么设置错误信息的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
djangoformerror修改样式可以去csdn找下,csdn的博客也可以找,下载那可以找相关资料找找
网站:
下载:download.csdn.net注册个账号就能下载
博客:blog.csdn.net
django2.0外键处理
Django2.0里model外键和一对一的on_delete参数
在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:
TypeError:__init__()missing1requiredpositionalargument:'on_delete'
举例说明:
user=models.OneToOneField(User)
owner=models.ForeignKey(UserProfile)
需要改成:
user=models.OneToOneField(User,on_delete=models.CASCADE)?????--在老版本这个参数(models.CASCADE)是默认值
owner=models.ForeignKey(UserProfile,on_delete=models.CASCADE)???--在老版本这个参数(models.CASCADE)是默认值
参数说明:
on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值
CASCADE:此值设置,是级联删除。
PROTECT:此值设置,是会报完整性错误。
SET_NULL:此值设置,会把外键设置为null,前提是允许为null。
SET_DEFAULT:此值设置,会把设置为外键的默认值。
SET():此值设置,会调用外面的值,可以是一个函数。
一般情况下使用CASCADE就可以了。
下面是官方文档说明:
ForeignKeyacceptsotherargumentsthatdefinethedetailsofhowtherelationworks.
ForeignKey.on_delete?
WhenanobjectreferencedbyaForeignKeyisdeleted,DjangowillemulatethebehavioroftheSQLconstraintspecifiedbytheon_deleteargument.Forexample,ifyouhaveanullableForeignKeyandyouwantittobesetnullwhenthereferencedobjectisdeleted:
user=models.ForeignKey(User,models.SET_NULL,blank=True,null=True,)
Deprecatedsinceversion1.9:on_deletewillbecomearequiredargumentinDjango2.0.InolderversionsitdefaultstoCASCADE.
Thepossiblevaluesforon_deletearefoundindjango.db.models:
CASCADE[source]?
Cascadedeletes.DjangoemulatesthebehavioroftheSQLconstraintONDELETECASCADEandalsodeletestheobjectcontainingtheForeignKey.
PROTECT[source]?
PreventdeletionofthereferencedobjectbyraisingProtectedError,asubclassofdjango.db.IntegrityError.
SET_NULL[source]?
SettheForeignKeynull;thisisonlypossibleifnullisTrue.
SET_DEFAULT[source]?
SettheForeignKeytoitsdefaultvalue;adefaultfortheForeignKeymustbeset.
SET()[source]?
SettheForeignKeytothevaluepassedtoSET(),orifacallableispassedin,theresultofcallingit.Inmostcases,passingacallablewillbenecessarytoavoidexecutingqueriesatthetimeyourmodels.pyisimported:
fromdjango.confimportsettingsfromdjango.contrib.authimportget_user_modelfromdjango.dbimportmodelsdefget_sentinel_user():returnget_user_model().objects.get_or_create(username='deleted')[0]classMyModel(models.Model):user=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.SET(get_sentinel_user),)
DO_NOTHING[source]?
Takenoaction.Ifyourdatabasebackendenforcesreferentialintegrity,thiswillcauseanIntegrityErrorunlessyoumanuallyaddanSQLONDELETEconstrainttothedatabasefield.
ForeignKey.limit_choices_to?
SetsalimittotheavailablechoicesforthisfieldwhenthisfieldisrenderesingaModelFormortheadmin(bydefault,allobjectsinthequerysetareavailabletochoose).Eitheradictionary,aQobject,oracallablereturningadictionaryorQobjectcanbeused.
Forexample:
staff_member=models.ForeignKey(User,on_delete=models.CASCADE,limit_choices_to={'is_staff':True},)
causesthecorrespondingfieldontheModelFormtolistonlyUsersthathaveis_staff=True.ThismaybehelpfulintheDjangoadmin.
Thecallableformcanbehelpful,forinstance,whenusedinconjunctionwiththePythondatetimemoletolimitselectionsbydaterange.Forexample:
deflimit_pub_date_choices():return{'pub_date__lte':datetime.date.utcnow()}limit_choices_to=limit_pub_date_choices
Iflimit_choices_toisorreturnsaQobject,whichisusefulforcomplexqueries,thenitwillonlyhaveaneffectonthechoicesavailableintheadminwhenthefieldisnotlistedinraw_id_fieldsintheModelAdminforthemodel.
Note
Ifacallableisusedforlimit_choices_to,itwillbeinvokedeverytimeanewformisinstantiated.Itmayalsobeinvokedwhenamodelisvalidated,forexamplebymanagementcommandsortheadmin.Theadminconstructsquerysetstovalidateitsforminputsinvariousedgecasesmultipletimes,sothereisapossibilityyourcallablemaybeinvokedseveraltimes.
如何自定义django中自定义表单的错误信息你先把template在这个字段的代码贴一下KissMyDumbAss
{{form.no.errors.as_text}}就这个
django获取表单页面复选框的值报错class?AddBookForm(forms.Form):
????def?__init__(self,*args,**kwargs):
????????...
????????self.fields['authors'].choices?=?[(author.id,author.first_name?+?"?"?+?author.last_name)?for?author?in?Author.objects.all()]
????????self.fields['publisher'].choices?=?[('','-----------')]?+?[(publisher.id,publisher.name)?for?publisher?in?Publisher.objects.all()]
????????...
form里这两行有问题,这行如果你想重新赋值的话应该给一个queryset,而不是列表。如果你想测试一下的话可以先把这行注释掉,然后你在提交看看表单验证是否能通过。如果通过了那确定问题就是这里了。我想我应该不会错。。。
结语:以上就是首席CTO笔记为大家整理的关于django2.0表单怎么设置错误信息的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~