gpt4 book ai didi

python - Django错误 'RawQuerySet'对象没有属性 'all'

转载 作者:行者123 更新时间:2023-12-01 03:39:31 25 4
gpt4 key购买 nike

如果我使用 SQL 语句填充下拉列表中的数据,则会收到此错误消息。

错误信息

'RawQuerySet' object has no attribute 'all'

模型.py

@python_2_unicode_compatible  # only if you need to support Python 2
class FacebookAccount(models.Model):
user = models.ForeignKey(User)
account_description = models.CharField(max_length=50)
facebook_application_id = models.CharField(max_length=50)
facebook_application_secret = models.CharField(max_length=50)
ouath_token = models.CharField(max_length=500)
status = models.BooleanField(default=False)

def __str__(self):
return self.account_description

@python_2_unicode_compatible # only if you need to support Python 2
class FacebookFanPage(models.Model):
facebook_account = models.ForeignKey(FacebookAccount)
fan_page_description = models.CharField(max_length=50)
fan_page_id = models.CharField(max_length=30)
fan_page_access_token = models.CharField(max_length=500, null=True)

def __str__(self):
return self.fan_page_description

class Campaign(models.Model):
aList = (
('1', 'Send replies to inbox messages'),
('2', 'Post replies to users comments')
)
user = models.ForeignKey(User)
campaign_name = models.CharField(max_length=50)
autoresponder_type = models.CharField(max_length=10, choices=aList, null=True)
facebook_account_to_use = models.ForeignKey(FacebookAccount)
set_auto_reply_for_fan_page = models.ForeignKey(FacebookFanPage)
message_list_to_use = models.ForeignKey(PredefinedMessage)
#reply_only_in_this_hourly_interval
reply_only_for_this_keyword = models.CharField(max_length=50, null=True)

查看.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})

最佳答案

正如第一条评论所说,您似乎正在对查询集调用 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()

In [11]: t.all()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-11-2ce0015f044f> in <module>()
----> 1 t.all()

AttributeError: 'RawQuerySet' object has no attribute 'all'

In [12]:

所以看起来您在执行 sql 原始查询后正在调用 all() 。把那段代码去掉就解决了。 您可以引用to this section of django docs如果你想使用更好的方法来执行sql查询。

编辑

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

关于python - Django错误 'RawQuerySet'对象没有属性 'all',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39865349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com