Django获取错误:";“反向存取器”;在模型中

Django获取错误:";“反向存取器”;在模型中,django,django-models,Django,Django Models,我正在尝试使用django inspect db创建一个db模型,它正在生成所有的模型,但我遇到了错误 我正在使用此命令为现有数据库生成db模型: python manage.py inspectdb > models.py 它准确地生成模型,但文件如下: create_uid = models.ForeignKey('self', models.DO_NOTHING,db_column='create_uid', blank=True, null=True) write_uid = m

我正在尝试使用django inspect db创建一个db模型,它正在生成所有的模型,但我遇到了错误

我正在使用此命令为现有数据库生成db模型:

python manage.py inspectdb > models.py
它准确地生成模型,但文件如下:

create_uid = models.ForeignKey('self', models.DO_NOTHING,db_column='create_uid', blank=True, null=True)
write_uid = models.ForeignKey('self',models.DO_NOTHING,  db_column='write_uid', blank=True, null=True)
我得到一个错误:

polls.ResUsers.create_uid: (fields.E304) Reverse accessor for 'ResUsers.create_uid' clashes with reverse accessor for 'ResUsers.write_uid'.
    HINT: Add or change a related_name argument to the definition for 'ResUsers.create_uid' or 'ResUsers.write_uid'.
polls.ResUsers.write_uid: (fields.E304) Reverse accessor for 'ResUsers.write_uid' clashes with reverse accessor for 'ResUsers.create_uid'.
    HINT: Add or change a related_name argument to the definition for 'ResUsers.write_uid' or 'ResUsers.create_uid'.
我正在添加如下相关名称:

create_uid = models.ForeignKey('self', models.DO_NOTHING,related_name='create_uid',db_column='create_uid', blank=True, null=True)
create_uid = models.ForeignKey(
    'self',
    models.DO_NOTHING,
    db_column='create_uid',
    related_name='created_items',
    blank=True,
    null=True
)
create_uid = models.ForeignKey(
    'ResUsers',
    models.DO_NOTHING,
    db_column='create_uid',
    related_name='created_items',
    blank=True,
    null=True
)
为了使用生成的模型,我应该做什么。我正在使用postgres

我正在更新我的问题当我这样使用它时,其中一个答案对我有效:

create_uid = models.ForeignKey('self', models.DO_NOTHING,related_name='create_uid',db_column='create_uid', blank=True, null=True)
create_uid = models.ForeignKey(
    'self',
    models.DO_NOTHING,
    db_column='create_uid',
    related_name='created_items',
    blank=True,
    null=True
)
create_uid = models.ForeignKey(
    'ResUsers',
    models.DO_NOTHING,
    db_column='create_uid',
    related_name='created_items',
    blank=True,
    null=True
)
在另一个模型类中,当我使用以下代码时:

create_uid = models.ForeignKey('self', models.DO_NOTHING,related_name='create_uid',db_column='create_uid', blank=True, null=True)
create_uid = models.ForeignKey(
    'self',
    models.DO_NOTHING,
    db_column='create_uid',
    related_name='created_items',
    blank=True,
    null=True
)
create_uid = models.ForeignKey(
    'ResUsers',
    models.DO_NOTHING,
    db_column='create_uid',
    related_name='created_items',
    blank=True,
    null=True
)
我得到一个错误:

polls.ResUsers.create_uid: (fields.E304) Reverse accessor for 'ResUsers.create_uid' clashes with reverse accessor for 'SurveyUserInput.create_uid'.
    HINT: Add or change a related_name argument to the definition for 'ResUsers.create_uid' or 'SurveyUserInput.create_uid'.
是反向关系的名称。因此,它意味着使用对象的as
create\u uid
/
write\u uid
访问所有模型对象。这可能会导致一个由零个、一个或多个元素组成的
QuerySet

因此,与同一模型相关的两个
外键的
名称
s不能相同,因为这会使模型模糊不清。由于您的
ForeignKey
s引用的是
'self'
模型,因此您甚至无法为这些模型指定已存在字段的名称

因此,您可能希望给这些关系起一个如下名称:

class MyModel(models.Model):
    create_uid = models.ForeignKey(
        'self',
        models.DO_NOTHING,
        db_column='create_uid',
        related_name='created_items',
        blank=True,
        null=True
    )
    write_uid = models.ForeignKey(
        'self',
        models.DO_NOTHING,
        db_column='write_uid',
        related_name='written_items',
        blank=True,
        null=True
    )
类MyModel(models.Model):
创建\u uid=models.ForeignKey(
“自我”,
什么都不做,
db_column='create_uid',
相关的_name='created_items',
空白=真,
空=真
)
write_uid=models.ForeignKey(
“自我”,
什么都不做,
db_column='write'u uid',
相关的\名称='书面\项目',
空白=真,
空=真

)
related\u name
是关系的反向名称,因此通常与关系的名称不同。由于您在这里引用了
“self”
,通常它也不起作用。有许多类似的模型,如何使它起作用?它对我起作用,但当我在self不存在的地方使用相同的代码时,我会收到错误:“ResUsers.create\uid”的反向访问器与“SurveyUserInput.create\uid”的反向访问器冲突。Se更新了问题。@NilaySingh:是的,您需要创建其他
相关的\u名称
,如前所述,相关名称是从目标模型到您定义它的模型之间的关系的名称,这些名称应该是唯一的。