1

假设对于下面的“floorfield”,我要添加字段验证,效果如下:如果用户提交的 floorfield 值小于 0,则重新提示用户提交大于零的新 floorfield 值。

我已经阅读了 django 文档,寻找了教程,并且我正在努力寻找如何实现上述行为的方法。

class Amodel(...):
    floorfield = integerfield()

class Amodel(CreateView):
    model = Amodel
    form_class = modelform_factory(Amodel, fields=("floorfield",))
4

2 回答 2

0

不幸的是,进行自定义(例如特殊字段验证)需要您制作自己的表单并将其作为参数传递给modelform_factory. 你可以在这里阅读

class AModelForm(forms.Form):
    floorfield = forms.FloatField()
    def clean(self):
        if self.floorfield <= 0
            #return your errors here
        #return cleaned form here

并像这样在您的 CreateView 中调用它:

form_class = modelform_factory(Amodel, form=AModelForm)

然后,.clean()当您发布到创建视图并通过form_valid().

于 2013-09-08T19:30:03.863 回答
0

您可以将自定义表单定义为 modelform_factoryform参数,并覆盖clean_floorfield以便自动进行验证。

https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute

或者您只是定义floorfieldPositiveIntegerField模型字段。

https://docs.djangoproject.com/en/dev/ref/models/fields/#positiveintegerfield

于 2013-09-08T19:28:33.733 回答