首页 > 解决方案 > 测试 DataField 以仅接受过去的数据。清洁(),Django,断言错误

问题描述

我正在尝试编写测试以检查我的 DataField 是否仅接受过去的数据,但它不能正常工作。

表格.py

class BookForm(PermissionRequiredMixin, ModelForm):

    class Meta:
        model = Book
        fields = ['title', 'author', 'summary', 'tag', 'genre', 'language', 'book_format', 'read_date']

    def clean_read_date(self):
        data = self.cleaned_data['read_date']
        #Check date is not in future.
        if data > datetime.date.today():
            raise ValidationError('Invalid date - book read date in future!')
        return data

test._forms.py

class BookFormTest(TestCase):
    def test_book_form_date_in_futuret(self):
        date = datetime.date.today() - datetime.timedelta(days=10)
        form_data = {'read_date': date}
        form = BookForm(data=form_data)
        self.assertTrue(form.is_valid())

有谁知道为什么我的 clean_read_data 不起作用?我知道可能我可以用不同的方式做到这一点,但我读到使用 clean() 是检查 DateField 是在未来还是过去的最好方法。

标签: pythondjangodata-cleaningmodelformdatefield

解决方案


推荐阅读