Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从modelform Django保存数据_Python_Django_Validation_Modelform - Fatal编程技术网

Python 从modelform Django保存数据

Python 从modelform Django保存数据,python,django,validation,modelform,Python,Django,Validation,Modelform,现在抬起头来!我是刚从努伯斯维尔下车的努伯斯 所以我在做一个表单来加载信息并编辑表单信息,我很头疼。因此,我使用: Django:1.8 Pyhton:3.5.1 后端是sqlite 我正在使用form.ModelForm将信息加载到中,但当涉及到保存时,这就是我遇到的问题。文档非常混乱,我应该全部使用还是只使用一个干净的 这是forms.py class EditContact(forms.ModelForm): class Meta: model = Contact

现在抬起头来!我是刚从努伯斯维尔下车的努伯斯

所以我在做一个表单来加载信息并编辑表单信息,我很头疼。因此,我使用:

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_方法,但我认为我想要使用的是clean,在我看来应该使用所有方法

这是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
现在,模型上面的字段和类型都为blank=true和null=true,但被排除的字段date\u of\u条目除外


我发现,当在视图中调用is_valid()时,它会调用models.clean()但无法保存!!!我不知道为什么!我不知道如何进行验证。我想知道流程和所需的内容,甚至是表单验证的一个示例。

我想您需要一些信息/答案,请查看您的代码注释。希望这有助于:

1) 如果需要处理特定于该字段的自定义内容,则只需使用clean_FIELDNAME函数。委员会:

因此,在该块中,他们正在检查提供的电子邮件列表是否包含特定的电子邮件

2) 这还显示了您在评论中提出的关于如何处理验证的另一个问题。您将在上面的代码片段中看到,您可以引发forms.ValidationError。下面将对此进行详细讨论:

因此,如果在任何一个clean_uu方法或主clean方法中出现错误,则.is_uvalid()形式将为false


这有用吗?

我真的不明白你在问什么。如果在ContactID字段上没有任何自定义验证,为什么要定义
clean\u ContactID()
?你想达到什么目的?老实说,我不知道我是在遵循一个教程,并试图用我的个人项目。那么您的意思是使用clean()?好的,我会的,但它仍然失败,我不知道为什么我找到了解决我头痛的方法,我的一个字段是dateime,而我输入的日期格式错误。所以它期待着“08/16/2016”,而我进入了“2016/16/08”,这导致了它的失败。(验证)未来的人们也是如此!注意将数据输入表单的方式。尤其是约会!好的,我应该用clean()来清理所有的东西,明白了吗!还有一个附带的问题,它在我执行迁移之后添加了clean方法,但它未能更新迁移,这会导致任何清理错误吗?另外,我使用的是modelform,所以is clean()也适用于它,对吗?无论如何,我可以让系统打印出为什么它无法编辑我的联系人?验证方面的帮助就像self.cleaned_data.get['contactID']我想问很多我知道我只是不明白,所以迁移只会影响数据库,并根据模型更改更新它。我认为这不会对表单清理结果产生任何直接影响,除非您的模型更改由于字段不可为null或为空而导致验证失败。若要查看验证失败的原因,请尝试调试并单步执行检查f.is_valid()的“if条件”,或使用print(f.errors)打印到控制台,或在模板中显示用户的字段错误(您最终可能会这样做).查看Django文档:有关这些主题的更多信息,非常感谢!您帮助我更好地理解了clean()和验证,我通过删除所有clean()解决了它,并注意到我为datetimefield输入的日期错误,该字段现在正在工作,我可以轻松地编辑数据!很高兴我能帮忙。如果我的回答足够好,请随意接受。
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