【问题标题】:Django: how to assign a RawQuerySet to a Selectfield in formsDjango:如何将 RawQuerySet 分配给表单中的 Selectfield
【发布时间】:2016-02-16 16:25:12
【问题描述】:

在很多情况下,我会在 django 形式的选择字段中添加自定义查询集。

form.fields[fieldname] = model.objects.all()

现在我有一个选择字段,我需要将 RawQueryset 的结果指定为选项。 我试过这个(查询集被简化):

sql = "SELECT * FROM table WHERE value = %s"
param.append (1234)
qs = model.objects.raw (sql, param)
form.fields[fieldname] = qs

页面已正确显示,并且选择字段包含来自查询集的数据。 当我尝试保存表单时,表单验证 (form.is_valid()) 会抛出错误:

*** 属性错误:'RawQuerySet' 对象没有属性'get'

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

【问题讨论】:

    标签: sql django django-forms django-queryset


    【解决方案1】:

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

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

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

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

    django doc.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2013-12-23
      相关资源
      最近更新 更多