我有一个django应用程序,带有一个用户模型,其中包含一个followers字段,用于包含跟踪用户的人,通过使用相关的_名称,我们可以得到用户跟踪的人.反之亦然.打印用户的关注者是可行的,但我似乎无法让这些关注者发挥作用.

意见.py

followers = User.objects.get(username='bellfrank2').followers.all()
following = User.objects.get(username='bellfrank2').followees.all()

print(followers)
print(following)

模型.py

class User(AbstractUser):
    followers = models.ManyToManyField('self', blank=True, related_name="followees")

错误:

Attribute错误: 'User' object has no attribute 'followees'

推荐答案

根据文档,所有递归的多对多关系在默认情况下也是对称的.

看这里:https://docs.djangoproject.com/en/4.0/ref/models/fields/#django.db.models.ManyToManyField.symmetrical

当Django处理这个模型时,它会识别出它自己有一个ManyToManyField,因此,它不会向person类添加person_set属性.相反,假设ManyToManyField是对称的——也就是说,如果我是你的朋友,那么你就是我的朋友.

因此,要使字段实际创建followees属性,需要将symmetrical属性设置为False.

模型.py

class User(AbstractUser):
    followers = models.ManyToManyField('self', blank=True, related_name="followees", symmetrical=False)

Django相关问答推荐

Django中的Sync_to_Async修饰器、异步视图

在生产中添加整型主键

Django:作为模型中的列表元素的字段

如何在Django模板中为无效词典查找打开异常?

带有变量键的 Django 模板括号表示法不起作用

Django如何在没有ctrl点击的情况下允许多选

访问默认的 django-allauth 登录和注册页面时出现 TemplateSyntaxError

使用 Django 一次更新多条记录

如何将表单中的用户字段设置为当前登录的用户?

在 Scrapy 中访问 django 模型

Django REST Framework - 将额外参数传递给操作

Django 基于角色的视图?

在 Django 中,您可以向查询集添加方法吗?

在 Django 管理员中嵌套内联?

Django表单集:首先需要?

模拟 Django 查询集以测试采用查询集的函数

get_or_create() 是否必须立即保存?

django 应用基于条件的样式类

在 Django 单元测试中使用 mock 修补 celery 任务

AttributeError:ManyRelatedManager对象没有add属性?