На этот раз я думаю, что это не я глупый, а настоящий конфликт. У меня есть следующий код (упрощенный):
from django.db import models
class Alpha(models.Model):
relation = models.ForeignKey('Delta', related_name = 'reverse_relation', blank = True, null = True)
class Meta:
abstract = True
class Beta(Alpha):
pass
class Gamma(Alpha):
pass
class Delta(models.Model):
pass
Проблема в том, что Delta.reverse_relation может относиться к экземпляру Beta или экземпляру Gamma. Мне как-то пришлось бы указать несколько значений related_name (или одно, зависящее от имени класса). Я думаю, что проблема ясна, но, чтобы завершить, ошибка (при запуске syncdb):
app.beta: Аксессор поля «отношение» конфликтует со связанным полем «Delta.reverse_relation». Добавьте аргумент related_name к определению "отношения".
app.beta: имя обратного запроса для поля «отношение» конфликтует со связанным полем «Delta.reverse_relation». Добавьте аргумент related_name к определению "отношения".
app.gamma: Аксессор для поля 'Relationship' конфликтует со связанным полем 'Delta.reverse_relation'. Добавьте аргумент related_name к определению "отношения".
app.gamma: имя обратного запроса для поля «отношение» конфликтует со связанным полем «Delta.reverse_relation». Добавьте аргумент related_name к определению «отношения».
Можно ли вообще поместить ForeignKey в родительский Alpha, или это единственный способ вырезать и вставить этот код в Beta и Gamma? Я предпочитаю этого не делать, потому что это как бы побеждает точку наследования, если я не могу определить в родительской половине поля, которые разделяют все дочерние элементы.
Любая помощь приветствуется!
(Если кто-нибудь может прокомментировать с почему сообщений об ошибках нет в поле кода, я исправлю это.)