我有一个 Site
模型,我正在尝试创建一个扩展 django.forms.ModelMultipleChoiceField
的 SiteSelectorField
,它使用我的自定义 SiteSelectorWidget
和 Site.objects.all()
作为查询集
没有自定义表单字段,我的forms.py代码看起来像这样(并且有效):
sites = forms.ModelMultipleChoiceField(queryset=Site.objects.all(), widget=SiteSelectorWidget())
我想限制传递的参数,所以我可以这样做
sites = SiteSelectorField()
但是当我创建SiteSelectorField类时,如下所示,Django告诉我“SiteSelectorField”对象没有属性'validators'
class SiteSelectorField(forms.ModelMultipleChoiceField):
queryset = Site.objects.all()
widget = SiteSelectorWidget()
def __init__(self, *args, **kwargs):
pass
如何为此字段指定默认查询集和窗口小部件,以便不需要传递它们?
1 回答
删除
def __init__
方法和代码 . 通过将"pass"放在那里,你将覆盖你的类继承的ModelMultipleChoiceField
的默认功能,它将利用查询集 .编辑:
像这样重新构建你的
__init__
方法: