簡體   English   中英

Django ManyToMany Relationship無法訪問字段

[英]Django ManyToMany Relationship can't access fields

我有一個列表模型,兩次使用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代碼:

todolist = get_object_or_404(TodoList, slug=list_slug)
users = todolist.list_users

第一行工作正常。 但是,當我得到list_users ,即使該列表通過admin添加了3個用戶,它也會返回auth.User.None

這是我的#2代碼:

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

該頁面將發送:

AttributeError:“用戶”對象沒有屬性“ todolist”

但是當我將list_users重命名為user 它將正常工作。 可能是什么問題呢?

關於第一個問題,您可能想要todolist.list_users.all() (也就是說,您需要QuerySet ,而不是Manager 。)

關於第二個問題,我不確定您實際上試圖建立哪種關系,但是無論哪種情況,都需要使用related_name定義的屬性。 (即, user.created_by.all()user.list_users.all() 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM