【问题标题】:'QuerySet' object has no attribute. Strange situation'QuerySet' 对象没有属性。奇怪的情况
【发布时间】:2015-04-23 00:58:35
【问题描述】:

我遇到了一个错误,我真的不知道为什么 Django 会做出奇怪的反应。

如果我写:

from jezyk.models import Jezyk
from pytania.models import Pytanie
from userprofile.models import UserProfile

def test_qr(request):
    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="egzamin.pdf"'

    uzyt = UserProfile.objects.all().order_by('user_id')
    jez = Jezyk.objects.all()

    pytanie = Pytanie.objects.all().order_by('godzina')

    p = canvas.Canvas(response)


    for z, uzyt in enumerate(UserProfile.objects.order_by('godzina', 'jezyk_id')):

        if jez.jezyk ==  'EN' :
            for i, pytanie in enumerate(Pytanie.objects.all()):
                p.drawString(10, 400 + i*210, ' '+ pytanie.title) 

我收到一个错误:

Exception Value: 'QuerySet' object has no attribute 'jezyk'

这个错误来自这里:

    if jez.jezyk ==  'EN' :

我觉得很奇怪,因为这段代码有效:

    uzyt = UserProfile.objects.all().order_by('user_id')

为什么无法从表 jezyk 访问列 jezyk?

在我的 sqlite 表 jezyk 中,我有 2 列:id 和 jezyk,如下所示:

【问题讨论】:

  • 如果清楚代码的用途会有所帮助。

标签: python django python-2.7 django-views


【解决方案1】:

jez 的值为QuerySet,并且查询集没有名为jezyk 的属性:

jez = Jezyk.objects.all()

据我了解,您希望遍历所有用户配置文件并检查他们的语言设置。如果是这样,我认为您甚至不需要获取所有 Jezyk 对象,您可以改为执行以下操作;

for z, uzyt in enumerate(UserProfile.objects.select_related('jezyk').order_by('godzina', 'jezyk_id')):
    if uzyt.jezyk.jezyk == 'EN':
        ...

【讨论】:

  • @user3904216 欢迎您。我已经更新了我的答案并在您的查询集中添加了select_related('jezyk')。这样,uzyt.jezykfor 循环中的调用不会命中数据库。
【解决方案2】:

您没有发布完整的代码回溯,但有一个错误很明显:jez 不是一个简单的模型对象,而是一个包含所有 SQL 结果的QuerySet,因此

jez = Jezyk.objects.all()
if jez.jezyk == 'EN':  # <- this fails here.

也许您想知道用户的语言:uzyt.jezyk.jezyk,并将其与'EN'uzyt.jezyk.jezyk == 'EN'进行比较?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 2021-06-12
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多