python - django 将关系添加到用户模型

标签 python django django-models

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

我需要添加与用户的关系。目前,用户喜欢的文章为“喜欢”关系,其他用户关注的文章为“关注”关系。

定义这些关系的最佳方式是什么? django 文档建议创建一个与用户具有一对一关系的 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()

关于python - django 将关系添加到用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13033979/

相关文章:

python - 为结构化数据调整 Numpy Dtype 大小的最佳方法

python - 超出 Django 最大递归深度

android - 在给定坐标的特定范围内查找项目

mysql - 带有 select .extra() 的 Django 数据集给出非常慢的 mysql 查询

python - 如何使用非包含范围生成类似示例中的列表? (Python)

python - Falcon CORS 中间件无法正常工作

python - 如何更改 Vim 中的 Python 颜色?

javascript - 如何更模块化地编写 jQuery 代码?

python - Django : Deduce duplicate key exception from IntegrityError

Django ORM——重要的数据库变更/数据迁移