现在抬头!我是NOO-BUS的NOOB-BUS新鲜的菜鸟!
所以我正在一个表单上加载信息并编辑表单信息,我很头疼。所以我正在使用:
Django:1.8 Pyhton:3.5.1 后端是sqlite
我正在使用form.ModelForm来加载信息,但是当涉及到保存时,这就是我被困住的地方。如果我使用全部或只使用一个清洁文档,则文档非常混乱。
这是forms.py
class EditContact(forms.ModelForm):
class Meta:
model = Contact
#the list of all fields
exclude = ['date_modified']
def clean(self):
if self.date_of_entry is None:
print("looking to see what works")
self.date_of_entry = datetime.date.today()
return
def clean_ContactID(self):
#see this line below this comment i dunno what it does
ContactID= self.cleaned_data.get('ContactID')
print ("cleaning it")
# i also dont know what validation code suppose to look like
# i cant find any working examples of how to clean data
return ContactID
现在主要有更多def clean_methods,但我认为我想要使用的是干净的,除了在我看来应该使用所有。
这是在view.py
中def saveContactInfo (request):
#this part i get
if request.user.is_authenticated():
ContactID= request.POST['ContactID']
a = ListofContacts.objects.get(ContactID=ContactID)
f = EditContact(request.POST,instance=a)
print("plz work!")
if f.is_valid():
f.save()
return render (request,"Contactmanager/editContact.html", {'contactID': contactID})
else:
return HttpResponse("something isnt savin")
else:
return HttpResponse("Hello, you shouldnt ")
这是model.py
def clean(self):
if self.ConactID is None:
raise ValidationError(_('ContactID cant be NULL!'))
if self.date_of_entry is None:
print("think it might call here first?")
self.date_of_entry = datetime.date.today()
print ( self.date_of_entry )
if self.modified_by is not None:
self.modified_by="darnellefornow"
print(self.modified_by )
if self.entered_by is not None:
self.entered_by = "darnellefornow"
print(self.entered_by )
ContactID = self.cleaned_data.get('ContactID')
return
现在模型上方的字段和类型都有空白= true和null = true除了排除的字段date_of_entry
并且我已经发现在视图中调用is_valid()时它会调用models.clean()但是它无法保存!我不知道为什么!我不知道如何进行验证。我想知道这个过程和需要什么,甚至是一个表单验证字段的例子。
答案 0 :(得分:1)
我认为你在这里想了解一些事情的信息/答案,看看你的代码评论。希望这会有所帮助:
1)如果您需要处理专门针对该字段定制的内容,则只需使用clean_FIELDNAME函数。 Django docs show this as an example:
def clean_recipients(self):
data = self.cleaned_data['recipients']
if "fred@example.com" not in data:
raise forms.ValidationError("You have forgotten about Fred!")
# Always return the cleaned data, whether you have changed it or
# not.
return data
因此,在该块中,他们正在检查提供的电子邮件列表是否包含特定电子邮件。
2)这也显示了您在评论中询问的另一个问题,即如何处理验证。您将在上面的代码段中看到,您可以引发一个forms.ValidationError。这里将对此进行更多讨论:https://docs.djangoproject.com/en/1.10/ref/forms/validation/
因此,如果在任何clean_方法或main clean方法中引发错误,则form.is_valid()将为false。
这有帮助吗?