我想在django中实现一个基本的社交网络模型,即follower和follower
class CustomUser(User):
followers = models.ManyToManyField('self', related_name='followees',
related_query_name='followee')
Run Code Online (Sandbox Code Playgroud)
以上是我定义的。我认为这足够了,因为 manytomany 字段提供回溯查询。我还需要创建一个多对多提交的追随者吗?
任何人都可以帮助编写函数如何获取关注者和被关注者的数量,以及关注者列表和关注者列表。我是 Django 的新手所以我对多对多领域感到困惑
@olieidel 是对的,但这里还有一件非常重要的事情,您不应在示例中错过:通常,M2M 关系是对称的。这意味着,如果您将用户 A 设置为用户 B 的关注者,则查询集也会返回用户 B 作为用户 A 的关注者。
您可以通过向symmetrical=False字段添加选项来避免此类行为:
followers = models.ManyToManyField(
to='self',
related_name='followees',
symmetrical=False
)
Run Code Online (Sandbox Code Playgroud)
不,您不必创建(第二个)跟随者 ManyToMany 字段。这已经通过指定来处理related_name='followees'。在旁注中,无需指定,related_query_name因为它的值related_name默认设置为 的值。
AManyToManyField返回 aRelatedManager允许您对其进行一些类似于 QuerySet 的查询。在您的情况下,您对以下内容感兴趣count():
custom_user = CustomUser().save()
# add followers etc..
followers_count = custom_user.followers.count()
followees_count = custom_user.followees.count()
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2018 次 |
| 最近记录: |