Django错误“RawQuerySet”对象没有属性“all”

2024-10-01 13:45:24 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我使用SQL语句填充dropdown中的数据,就会收到这个错误消息。在

错误信息

'RawQuerySet' object has no attribute 'all'

在模型.py在

^{pr2}$

在视图.py在

def autoresponder_create(request, template_name='autoresponder/autoresponder_form.html'):
if not request.user.is_authenticated():
    return redirect('home')
form = AutoresponderForm(request.POST or None)
form.fields["set_auto_reply_for_fan_page"].query = FacebookFanPage.objects.raw('SELECT * '
                                         'FROM fbautoreply_facebookfanpage '
                                         'JOIN fbautoreply_facebookaccount ON fbautoreply_facebookfanpage.facebook_account_id = fbautoreply_facebookaccount.id '
                                         'WHERE fbautoreply_facebookaccount.user_id = %s ', [str(request.user.id)])
if form.is_valid():
    form = form.save(commit=False)
    form.user = request.user
    form.save()
    return redirect('autoresponder_list')
return render(request, template_name, {'form':form})

Tags: namepyformidreturnifisrequest
1条回答
网友
1楼 · 发布于 2024-10-01 13:45:24

正如第一条注释所说,您似乎在对queryset调用all()。如果要将原始sql查询分配给变量,则不必在执行原始sql查询后调用.all(),因为该变量已包含查询获取的所有对象。在

In [6]: t = Team.objects.raw('SELECT * FROM core_team')

In [7]: t
Out[7]: <RawQuerySet: SELECT * FROM core_team>

In [8]: t[0]
Out[8]: <Team: test>
In [9]: [x for x in t ]
Out[9]: [<Team: test>, <Team: team2>, <Team: adminTeam>, <Team: team4>]

如果你打电话给t.all()

^{pr2}$

因此,您似乎是在执行一个sql原始查询之后调用all()。删除这段代码,它就会被解决。 如果要使用更好的方法执行sql查询,可以引用to this section of django docs。在

编辑

尝试将form.fields["set_auto_reply_for_fan_page"].query更改为form.fields["set_auto_reply_for_fan_page"].queryset

相关问题 更多 >