app*_*ief 2 python django django-models
我有一个使用内置用户模型的django项目。
我需要向用户添加关系。现在,紧跟着用户喜欢的文章的“喜欢”关系和其他用户的“跟随”关系。
定义这些关系的最佳方法是什么?django doc建议创建与用户一对一关系的Profile模型,以向用户添加字段。但是在我的情况下,由于没有多余的字段会添加到用户个人资料中,因此这太过分了。
有什么建议么?
对于这些特殊的多对多关系,您必须在模型中定义它们:
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)