【问题标题】:Django Reverse accessor errorDjango反向访问器错误
【发布时间】:2016-11-28 11:35:38
【问题描述】:

我不明白为什么我的模型的某些领域会发生冲突。

我没有任何外键,为什么它们会发生冲突?!

这是我的代码:

from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import AbstractUser
import datetime
import uuid

# Create your models here
class Patients(AbstractUser):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    first_name = models.CharField(max_length = 255)
    last_name = models.CharField(max_length = 255)
    dob = models.DateField(datetime.date.today)
    gender = models.CharField(max_length = 1)
    def __unicode__(self):
        return self.id

这是错误:

api.Patients.groups: (fields.E304) Reverse accessor for 'Patients.groups' clashes with reverse accessor for 'User.groups'.
        HINT: Add or change a related_name argument to the definition for 'Patients.groups' or 'User.groups'.
api.Patients.user_permissions: (fields.E304) Reverse accessor for 'Patients.user_permissions' clashes with reverse accessor for 'User.user_permissions'.
        HINT: Add or change a related_name argument to the definition for 'Patients.user_permissions' or 'User.user_permissions'.
auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'Patients.groups'.
        HINT: Add or change a related_name argument to the definition for 'User.groups' or 'Patients.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'Patients.user_permissions'.
        HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'Patients.user_permissions'.

【问题讨论】:

  • 错误是什么?
  • “我没有任何外键,为什么它们会发生冲突?!”定义冲突。向我们展示您的错误日志和回溯。
  • 对不起,我忘了把错误我刚刚编辑我的帖子
  • 你有另一个继承自AbstractUser的模型吗?
  • 您是否在您的settings.py 文件中添加了AUTH_USER_MODEL

标签: python django accessor


【解决方案1】:

您需要将AUTH_USER_MODEL 添加到您的setting.py 文件中。 Django 需要知道这一点才能初始化默认模型。您可以按如下方式添加:

AUTH_USER_MODEL = 'your_app.Patients'

在文档Substituting a custom User model中检查这一点

参考:https://stackoverflow.com/a/26703434/4575071

【讨论】:

  • 我应该在 [] 中输入我的模型名称吗?所以这个:AUTH_USER_MODEL = [病人]?
  • 你的应用名称,是api吗?如果是这样,那么您将添加api.Patients
  • 确实是 api 但现在我收到此错误:ValueError: The field admin.LogEntry.user was declared with alazy reference to 'api.patients', but app 'api' does not provide模型“患者”。
  • 应该是api.Patients 而不是api.patients
  • 这是一个与您问题中提到的不同的错误,如果上述问题得到解决,我认为最好再问一个问题。
【解决方案2】:

正在使用AbstractUser,那么你应该使用到文件settings.py:

AUTH_USER_MODEL = 'user.user'

【讨论】:

    猜你喜欢
    • 2012-06-20
    • 2014-04-27
    • 2014-01-20
    • 2023-03-21
    • 1970-01-01
    • 2011-06-13
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多