首页 > 解决方案 > 哪个更适合在 django 中创建追随者系统,外键或多对多?

问题描述

哪一个最适合在 Django 中创建追随者追随系统。

1.外键

class Follower(models.Model):
    current_user = models.ForeignKey(User,on_delete=models.CASCADE,related_name='following')
    following_id    = models.ForeignKey(User,on_delete=models.CASCADE,related_name='followers')

2.多对多

class Follower(models.Model):
    current_user = models.ForeignKey(User,on_delete=models.CASCADE,related_name='following')
    followers        = models.ManyToManyField(User)

因此,例如,如果我们要检索以下用户列表:

1.Foreign Key

Follower.objects.get(following_id=1).following.all()

2 多对多

User.object.get(user=1).follower_set.all().values('current_user')

标签: djangodjango-modelsdjango-rest-framework

解决方案


如果您想添加有关某人关注的元数据,您别无选择,只能使用带有直通表的 M2M。否则,您不妨使用选项 1。


推荐阅读