当在Django中循环访问User对象的QuerySet时,我在尝试访问另一个模型的每个User对象相关集时不断收到AttributeError。
models.py
class List(models.Model):
def __unicode__(self):
return self.title
title = models.CharField(max_length=225)
owner = models.ForeignKey(User, related_name='owned_lists')
utils的/ emails.py
def daily_completed():
users = User.objects.all()
for user in users:
# get one big QuerySet
all_lists = user.owned_lists.all()
print all_lists
当我的" daily_completed"函数运行时,在尝试查找每个用户的“拥有列表”时会触发以下AttributeError:
AttributeError:'用户'对象没有属性' owned_lists'
但是当我改变'daily_completed'函数只是代表一个用户运行,而不是遍历所有用户,它工作正常。
示例utils / emails.py
def daily_completed():
user = User.objects.get(pk=1)
# get one big QuerySet
all_lists = user.owned_lists.all()
print all_lists
上述功能正常,并且不会触发任何AttributeError。
任何人都知道为什么会这样?我真的很感激这里的一些帮助!提前谢谢。
以下是整个追溯:
Traceback (most recent call last):
File "C:\projects\slothnote\env\lib\site-packages\celery\app\trace.py", line 240, in trace_task
R = retval = fun(*args, **kwargs)
File "C:\projects\slothnote\env\lib\site-packages\celery\app\trace.py", line 437, in __protected_call__
return self.run(*args, **kwargs)
File "C:\projects\slothnote\env\slothnote\lists\tasks.py", line 14, in daily_completed_tasks_email
daily_completed()
File "C:\projects\slothnote\env\slothnote\lists\emails.py", line 30, in daily_completed
all_lists = user.owned_lists.all()
AttributeError: 'User' object has no attribute 'owned_lists'
更新
不知道为什么,但是当我改变我循环的变量的名称时。见这里:
all_users = User.objects.all()
for each_user in all_users:
# get one big QuerySet
all_lists = each_user.owned_lists.all()
print all_lists
上述块按预期执行。所以,我的问题已经解决,但我仍然真的很想知道为什么它之前没有工作。