Fre*_*ins 15 python django django-orm
我想在我的Django应用程序中实现关注者/关注功能.
我为每个用户(django.contrib.auth.User)提供了一个UserProfile类:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique = True, related_name = 'user')
follows = models.ManyToManyField("self", related_name = 'follows')
Run Code Online (Sandbox Code Playgroud)
所以我试着在python shell中这样做:
>>> user_1 = User.objects.get(pk = 1) # <-- mark
>>> user_2 = User.objects.get(pk = 2) # <-- john
>>> user_1.get_profile().follows.add(user_2.get_profile())
>>> user_1.get_profile().follows.all()
[<UserProfile: john>]
>>> user_2.get_profile().follows.all()
[<UserProfile: mark>]
Run Code Online (Sandbox Code Playgroud)
但正如您所看到的,当我向用户的follows
字段添加新用户时,还会在另一侧添加对称关系.从字面上看:如果user1跟随user2,user2也跟随user1,这是错误的.
哪里是我的错?你有没有办法实施粉丝并正确遵循?
感谢你们.
mou*_*uad 24
在Many2Many关系中将对称设置为False:
follows = models.ManyToManyField('self', related_name='follows', symmetrical=False)
Run Code Online (Sandbox Code Playgroud)