Django:如何将RawQuerySet分配给表单中的Selectfield

时间:2015-11-15 14:16:49

标签: sql django django-forms django-queryset

在很多情况下,我将自定义查询集添加到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'

我该如何解决这个问题? 感谢

1 个答案:

答案 0 :(得分:0)

您无法将queryset分配给表单字段,如下所示:

# this is wrong
form.fields[fieldname] = qs

您需要使用django所具有的字段之一来定义字段,例如:

form.fields[fieldname] = forms.ModelChoiceField(queryset=qs)

django doc