我具有以下结构:
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
?
答案 0 :(得分:1)
SelectMultiple(如Select等)是一个小部件,而不是一个字段。您需要在此处使用实际字段。可以使用的合适的应该是ModelMultipleChoiceField,它需要一个查询集。
请注意,您还需要添加一些自定义保存逻辑-Django不会处理该字段。