【发布时间】:2021-05-09 07:33:10
【问题描述】:
大家好,我正在尝试添加一个 m2m through 字段,以便让我的“部门”模型的助手像 department.assistants.all() 一样调用,但是在这样做时,我收到了这个错误 AttributeError: 'ManyToManyField' object has no attribute '_m2m_reverse_name_cache'。
这是我的模型:
class Department(models.Model):
id = models.BigAutoField(primary_key=True)
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
assistants = models.ManyToManyField(settings.AUTH_USER_MODEL, through='Assistants', related_name='dep_assistants',
symmetrical=False)
class Assistants(models.Model):
id = models.BigAutoField(primary_key=True)
department = models.ForeignKey(Department, related_name='of_department', on_delete=models.CASCADE)
assistant = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='dt_assistant',
verbose_name="Department Assistant", on_delete=models.CASCADE)
added = models.DateTimeField(auto_now_add=True)
我对这个概念很陌生。谁能告诉我我在这里做错了什么?
谢谢
【问题讨论】:
-
我假设来自
Assistants的ForeignKey与来自Department的m2m 发生碰撞。这个 db 结构甚至似乎没有意义。 -
是的,这似乎是我上面评论中的问题。如果您搜索
_m2m_reverse_name_cache,已经有一些问题处理完全相同的情况:stackoverflow.com/questions/50432609/… -
你的
settings.AUTH_USER_MODEL是什么,你使用的是哪个版本的Django? -
settings.AUTH_USER_MODEL 是我的自定义用户模型,它使用电子邮件而不是用户名登录。我使用的是 Django 3.1。
标签: python django django-models django-rest-framework django-views