缺少ModelForm额外字段

时间:2018-11-07 14:39:37

标签: django

我具有以下结构:

class ModelA(models.Model):
    # ...

class ModelB(models.Model):
    modela = models.ForeignKey(ModelA)
    # ...

还有ModelA的表单:ModelAForm。默认情况下,modelb_set的字段不存在,因为它是反向关系,因此我尝试将其添加到以下形式:

class ModelAForm(forms.ModelForm):
    modelb_set = forms.SelectMultiple()

    class Meta:
        model = ModelA
        exclude = []

    def __init___(self, *args, **kwargs):
        # ...
        self.fields['modelb_set']  # this throws KeyError

当我以表单的形式明确声明该字段时,为什么会抛出KeyError

1 个答案:

答案 0 :(得分:1)

SelectMultiple(如Select等)是一个小部件,而不是一个字段。您需要在此处使用实际字段。可以使用的合适的应该是ModelMultipleChoiceField,它需要一个查询集。

请注意,您还需要添加一些自定义保存逻辑-Django不会处理该字段。