Django forms.ChoiceField没有验证选定的值

Al *_*ndy 12 django

Django ChoiceField"验证给定值是否存在于选择列表中."

我想要一个ChoiceField(所以我可以在视图中输入选项)但我不希望Django检查选择是否在选项列表中.解释原因很复杂但这就是我的需要.这将如何实现?

jpr*_*itt 21

您可以创建自定义ChoiceField和覆盖以跳过验证:

class ChoiceFieldNoValidation(ChoiceField):
    def validate(self, value):
        pass
Run Code Online (Sandbox Code Playgroud)

我想知道你的用例,因为我真的想不出你为什么需要这个.

编辑:测试,制作表格:

class TestForm(forms.Form):
    choice = ChoiceFieldNoValidation(choices=[('one', 'One'), ('two', 'Two')])
Run Code Online (Sandbox Code Playgroud)

提供"无效"数据,并查看表单是否仍然有效:

form = TestForm({'choice': 'not-a-valid-choice'})
form.is_valid()  # True
Run Code Online (Sandbox Code Playgroud)

  • 嘿抱歉,它确实有效。但我找到了一种使用 forms.Charfield 和 forms.Select 小部件更简单的方法。问题是我忘记手动重新填充帖子上的字段,哦。 (2认同)

rad*_*tek 16

从外观来看,最好的方法是创建一个forms.Charfield并使用一个forms.Select小部件.这是一个例子:

from django import forms

class PurchaserChoiceForm(forms.ModelForm):
    floor = forms.CharField(required=False, widget=forms.Select(choices=[]))

    class Meta:
        model = PurchaserChoice
        fields = ['model', ]
Run Code Online (Sandbox Code Playgroud)

出于某种原因,单独覆盖验证器对我来说并没有成功.