На этот раз я думаю, что это не я, будучи глупым, но реальным конфликтом. У меня есть следующий код (упрощенный):
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. Я должен каким-то образом предоставить несколько значений связанных имен (или тот, который зависит от имени класса). Я думаю, что проблема ясна, но должна быть полной, ошибка (при запуске syncdb): app.beta: Аксессуар для связей "отношения" поля со связанным полем "Delta.reverse_relation" . Добавьте аргумент related_name в определение для отношения. app.beta: Обратное имя запроса для столкновений 'отношения' со связанным полем 'Delta.reverse_relation'. Добавьте аргумент related_name в определение для отношения. app.gamma: Accessor для связи "отношения" поля со связанным полем "Delta.reverse_relation" . Добавьте аргумент related_name в определение для отношения. app.gamma: Обратное имя запроса для связей "отношения" поля со связанным полем "Delta.reverse_relation" . Добавьте аргумент related_name в определение для 'отношения'.
Возможно ли вообще разместить ForeignKey в родительском Alpha или это единственный способ вырезать этот код для бета-версии и гаммы? Я предпочитаю не делать этого, потому что это как бы поражает точку наследования, если я не могу определить в родительской половине поля, которые разделяют все дети.
Любая помощь очень искушена!
(Если кто-нибудь может прокомментировать, почему сообщения об ошибках не указаны в поле кода, я исправлю это.)