django - 缺少 ModelForm 额外字段
问题描述
我有以下结构:
class ModelA(models.Model):
# ...
class ModelB(models.Model):
modela = models.ForeignKey(ModelA)
# ...
和一个表格ModelA
: ModelAForm
。默认情况下,for的字段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
在尝试访问该字段时会抛出异常?
解决方案
SelectMultiple - 像 Select 等 - 是一个小部件,而不是一个字段。您需要在此处使用实际字段。合适的使用可能是ModelMultipleChoiceField,它需要一个查询集。
请注意,您还需要添加一些自定义保存逻辑 - Django 不知道如何处理该字段。
推荐阅读
- sql-server - TSQL基于其他列聚合值
- sql-server - 在表“TableA”上引入 FOREIGN KEY 约束“FK_TableA_TableC_TableCID”可能会导致循环或多个级联路径
- django - reactjs 无法使用 axios 执行 put
- javascript - AngularJS:如何使用 html-decode for textarea 来解码特殊字符
- java - whatsapp如何立即收到消息?
- php - PHP(codeigniter)后端自动从 AJAX 调用中截取 POST 数据
- python - 如何将行多次插入到 numpy 数组中?
- javascript - 特定元素上的 Vue.js 过渡
- python - python函数中的奇怪返回值
- c - Qtcreator 错误添加符号:命令行中缺少 DSO