我收到错误,我真的不知道为什么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就像这里:
答案 0 :(得分: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':
...
答案 1 :(得分:0)
您没有在代码中发布完整的回溯,但是有一个错误是明确的:jez
不是简单的模型对象,而是包含所有SQL结果的QuerySet
,因此
jez = Jezyk.objects.all()
if jez.jezyk == 'EN': # <- this fails here.
也许您想要了解用户的语言:uzyt.jezyk.jezyk
,并将其与'EN'
进行比较:uzyt.jezyk.jezyk == 'EN'
?