django将关系添加到用户模型

app*_*ief 2 python django django-models

我有一个使用内置用户模型的django项目。

我需要向用户添加关系。现在,紧跟着用户喜欢的文章的“喜欢”关系和其他用户的“跟随”关系。

定义这些关系的最佳方法是什么?django doc建议创建与用户一对一关系的Profile模型,以向用户添加字段。但是在我的情况下,由于没有多余的字段会添加到用户个人资料中,因此这太过分了。

有什么建议么?

mik*_*725 5

对于这些特殊的多对多关系,您必须在模型中定义它们:

class UserFollowing(models.Model):
    user = models.ForeignKey(User, related_name='following')
    following = models.ForeignKey(User, related_name='followed_by')
Run Code Online (Sandbox Code Playgroud)

因此,如果您有用户,则可以执行以下操作:

user = User.objects.get(...)
user.following.all() # all users this user is following
user.followed_by.all() # all users who follow this user
Run Code Online (Sandbox Code Playgroud)

对于文章,您已经设置了类似的架构:

class ArticleLike(models.Model):
    article = models.ForeignKey(Article, related_name='likes')
    like = models.ForeignKey(User, related_name='articles_like')

Article.objects.get(...).likes.all()

User.objects.get(...).articles_like.all()
Run Code Online (Sandbox Code Playgroud)