Django manytomy关系无法访问字段

2024-04-25 21:15:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表模型,它两次使用User作为外键。在

第一个对创建者来说是ForeignKey。第二个是ManyToManyField,表示该列表的用户

class TodoList(models.Model):
    creator = models.ForeignKey(User, default=1,related_name='created_by')
    list_users = models.ManyToManyField(User,related_name='list_users')
    title = models.CharField(max_length=120)
    slug = models.SlugField(max_length=10, blank=True, null=True)
    status = models.SlugField(choices=STATUS_CHOICES, default='active', max_length=10)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)

我想做的是:

  1. 获取列表的用户。在
  2. 获取登录用户的列表。在

以下是我的#1代码:

^{pr2}$

第一行很好。但是当我得到list_users时,它将返回auth.User.None,即使列表中有3个用户通过admin添加到其中。在

以下是我的#2代码:

user = request.user
user_todo_lists = user.todolist.all()

页面将发送:

AttributeError: 'User' object has no attribute 'todolist'

但是当我把list_users重命名为user。它会很好的。有什么问题吗?在


Tags: 用户truedefault列表automodelslengthusers
1条回答
网友
1楼 · 发布于 2024-04-25 21:15:42

关于第一个问题,您可能想要todolist.list_users.all()。(也就是说,您想要的是QuerySet,而不是Manager。)

关于您的第二个问题,我不确定您实际上试图获取哪个关系,但是在任何一种情况下,您都需要使用related_name定义的属性。(即user.created_by.all()user.list_users.all()。)

相关问题 更多 >