【发布时间】:2011-09-07 06:31:40
【问题描述】:
我想在我的 Django 应用程序中实现关注者/关注功能。
我为每个 User (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')
所以我尝试在 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>]
但是正如你所看到的,当我在一个用户的follows 字段中添加一个新用户时,也会在另一侧添加对称关系。字面意思:如果 user1 跟随 user2,那么 user2 也跟随 user1,这是错误。
我的错误在哪里?你有办法实现追随者和正确追随吗?
谢谢你们。
【问题讨论】:
标签: python django django-orm