繁体   English   中英

Django多对多related_name

[英]Django Many-to-Many related_name

在此处输入图片说明

class Profile(models.Model): 
    user              = models.OneToOneField(User)
    followers         = models.ManyToManyField(User, related_name='is_following', blank=True) 
    activation_key    = models.CharField(max_length=120, blank=True, null=True)
    activated         = models.BooleanField(default=False)
    timestamp         = models.DateTimeField(auto_now_add=True)
    updated           = models.DateTimeField(auto_now=True)

    objects = ProfileManager()

    def __str__(self):
        return self.user.username 

当我键入User.profile.followers.all()和键入User.is_following.all() ,会收到不同的结果。

首先,我要更改:

followers = models.ManyToManyField(User

followers = models.ManyToManyField(Profile

然后,如果您尝试打印

 user1 = Profile.objects.create() #missing args but you don't need it for the example
 user2 = Profile.objects.create()
 user1.followers.add(user2)
 user1.followers.all() 

你会得到 :

[user2]

但是如果你这样做

 user1.is_following.all() 

你会得到 :

[]

最后,如果您这样做:

user2.is_following.all() 

结果将是:

[user1]

related_name允许您将您的对象放在另一个对象中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM