Проблема в том, что при создании ссылки ForeignKey
на другую модель автоматически создается обратная связь для этой модели - . В вашем случае на permissions.Permission
от ForeignKey
до ContentType
означает, что к ContentType
будет добавлен менеджер с именем permission_set
, который позволит получить доступ к permissions.Permission
объектам, которые ссылаются на него.
Причина, по которой он не работает, состоит в том, что неоднозначно, должен ли менеджер обратной связи permission_set
ссылаться на вашу модель permissions.Permission
или встроенную модель auth.Permission
. (Оба имеют от ForeignKey
до ContentType
, поэтому для обоих создается менеджер обратной связи.)
Чтобы решить эту проблему, вы должны использовать параметр related_name
для ForeignKey
. Это позволяет вам переопределить имя по умолчанию FOO_set
своим собственным. e.g.:
class Permission(models.Model):
user = models.ForeignKey(User)
table = models.ForeignKey(ContentType, related_name='custom_permission_set')
permi = models.IntegerField()