在很多情况下,我将自定义查询集添加到django表单的选择域中。
form.fields[fieldname] = model.objects.all()
现在我有一个selectfield,我需要指定RawQueryset的结果作为选择。 我试过这个(查询集已简化):
sql = "SELECT * FROM table WHERE value = %s"
param.append (1234)
qs = model.objects.raw (sql, param)
form.fields[fieldname] = qs
页面正确显示,选择字段包含查询集中的数据。 当我尝试保存表单时,表单验证(form.is_valid())抛出错误:
*** Attribut错误:' RawQuerySet'对象没有属性' get'
我该如何解决这个问题? 感谢
答案 0 :(得分:0)
您无法将queryset
分配给表单字段,如下所示:
# this is wrong
form.fields[fieldname] = qs
您需要使用django所具有的字段之一来定义字段,例如:
form.fields[fieldname] = forms.ModelChoiceField(queryset=qs)