循环访问Django User对象时的AttributeError

时间:2014-08-11 19:54:18

标签: python django

当在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

上述块按预期执行。所以,我的问题已经解决,但我仍然真的很想知道为什么它之前没有工作。

0 个答案:

没有答案