这是我得到的错误。
auth.permission: Accessor for field 'content_type' clashes with related field 'ContentType.permission_set'. Add a related_name argument to the definition for 'content_type'.
permissions.permission: Accessor for field 'table' clashes with related field 'ContentType.permission_set'. Add a related_name argument to the definition for 'table'.
这是我的模特。
from django.contrib.gis.db import models
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from maps.models import Sdr_Layer
class Permission(models.Model):
user = models.ForeignKey(User)
table = models.ForeignKey(ContentType)
permi = models.IntegerField()
有人可以向我解释错误的含义以及如何删除错误吗?
答案 0 :(得分:2)
问题在于,当您创建ForeignKey
链接到另一个模型时,会在该到模型上自动创建一个向后关系。在您permissions.Permission
的情况下,ForeignKey
到ContentType
意味着将有一位经理添加到名为ContentType
的{{1}},允许访问permission_set
链接到它的对象。
它不起作用的原因是,后向关系管理器permissions.Permission
是应该引用您的permission_set
模型还是内置permissions.Permission
模型,这是不明确的。 (两者都有auth.Permission
到ForeignKey
,因此为两者创建了一个向后关系管理器。)
要解决此问题,您必须使用ContentType
参数related_name
。这允许您使用自己的名称覆盖默认的ForeignKey
名称。 e.g:
FOO_set