我想在Django应用程序中实现followers/following特性。
对于每个用户(django.contrib.auth.User),我都有一个用户配置文件类:
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后面,这是错误的。
我的错在哪里?你有没有一种方法来实现跟随者和正确的跟随?
谢谢你们。
在Many2Many关系中将symmetrical设置为False:
除了穆阿德的回答外,我是否可以建议选择一个不同的*相关名称:如果马克跟随约翰,那么马克就是约翰的跟随者之一,对吧?
相关问题 更多 >
编程相关推荐