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
Django ModelForms正在忽略一个干净的字段方法_Django_Django Models_Django Forms - Fatal编程技术网

Django ModelForms正在忽略一个干净的字段方法

Django ModelForms正在忽略一个干净的字段方法,django,django-models,django-forms,Django,Django Models,Django Forms,我有以下模型,其中有一个日期字段: class E(models.Model): name = models.CharField(max_length=255 description = models.TextField(max_length=255) start_date = models.DateField(verbose_name='Start Date') 模型形式: class EventModelForm(forms.ModelForm): cla

我有以下模型,其中有一个日期字段:

class E(models.Model):

    name = models.CharField(max_length=255
    description = models.TextField(max_length=255)
    start_date = models.DateField(verbose_name='Start Date')
模型形式:

class EventModelForm(forms.ModelForm):
    class Meta:
        model = Event
        fields = ['name', 'description','start_date']


    def clean_start_date(self):

       datetime_format = '%a %b %d %Y'
       start_date = self.cleaned_data['start_date']
       return datetime.strptime(start_date, datetime_format)
我的问题是Django忽略了start_日期的clean方法,但考虑了其他字段的clean方法

因此我使用调试器进行检查,我看到它出现在
change\u data
中,而不是
cleaned\u data

changed_data: <class 'list'>: [name', 'description', ''start_date']
cleaned_data: name, description
更改的数据::[名称”,“描述”,“开始日期]
数据:名称、说明
这很奇怪,所以我检查了输入,看起来还可以:

<input name="start_date" class="c-fi' type="text">

如果要更改
日期字段的日期格式,应改为设置

class EventModelForm(forms.ModelForm):
    start_date = forms.DateField(
        verbose_name='Start Date',
        input_formats=['%a %b %d %Y'],
    )

class Meta:
    model = Event
    fields = ['name', 'description','start_date']

由于未在字段中包含自定义格式,因此字段本身将引发验证错误,因此
clean\u start\u date
方法永远不会运行。您可以阅读有关验证顺序的更多信息。请注意,您不必在
clean.*
方法中为
DateField
运行
strtime
clean.\u data
中的值在该点之前已经是日期。

您的字段部分中的“description”“start\u date”之后是否缺少逗号(',')??或者这只是一个输入错误?谢谢,只是编辑错误,与codeOops无关,应该在表单上,而不是模型上。我已经更新了答案。