[英]django add relationships to user model
我有一个使用内置用户模型的django项目。
我需要向用户添加关系。 现在,紧跟着用户喜欢的文章的“喜欢”关系和其他用户的“跟随”关系。
定义这些关系的最佳方法是什么? django doc建议创建与用户一对一关系的Profile模型,以向用户添加字段。 但是在我的情况下,由于没有多余的字段会添加到用户个人资料中,因此这太过分了。
有什么建议么?
对于这些特殊的多对多关系,您必须在模型中定义它们:
class UserFollowing(models.Model):
user = models.ForeignKey(User, related_name='following')
following = models.ForeignKey(User, related_name='followed_by')
因此,如果您有用户,则可以执行以下操作:
user = User.objects.get(...)
user.following.all() # all users this user is following
user.followed_by.all() # all users who follow this user
对于文章,您已经设置了类似的架构:
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()
在当前发布的Django版本[最高1.4.x]上,标准做法是定义配置文件对象。 这比通过扩展/修改“污染”内置用户模型更好。 即将发布的Django版本将允许创建自定义用户模型 。
综上所述:
您应该尝试为此使用Django Relationships应用程序。 它旨在在auth.users
之间创建关系,您将通过学习该代码来了解如何创建自引用跟随。 然后,您可以将其扩展为更多通用类型,或者使用Django Content Types Framework编写自己的类型
但是,由于Django ORM本质上并未完全定义为图数据库,因此您应尝试坚持关系数据库的概念,并适当地使用ManyToMany
Relationship或ForeignKey
。
将您的文章中的ManytoMany关系添加到用户模型。 每当用户喜欢一篇文章时,就将其添加到其中。 该字段的长度将是该文章中like的数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.