我想创建一个模型表单,它在模型中有一个外键。像:
class TestModel(Model):
field1=ForeignKey(RefModel)
我创建了一个表单:
class TestForm(ModelForm):
class Meta(object):
model = TestModel
widgets = {'field1': RadioSelect}
但是我想根据url对字段做一些限制,这意味着它不是常量数据,我应该怎么做才能更改testForm的field1的查询集?
答案 0 :(得分:4)
您可以覆盖该字段。 使用
field1 = ModelChoiceField(queryset=<<your_queryset_here>>, widget=RadioSelect)
您还可以在__init__
方法中覆盖此查询集并相应地调整字段:
class TestForm(ModelForm):
field1 = ModelChoiceField(queryset=<<your_queryset_here>>, widget=RadioSelect)
class Meta(object):
model = TestModel
def __init__(self, **kwargs):
super(TestForm, self).__init__(**kwargs)
self.fields['field1'].queryset = kwargs.pop('field1_qs')
并在管理它的视图中相应地启动表单。
my_form = TestForm(field1_qs=MyQS)