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