Поле, указанное дважды во внешних ключах - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть следующая модель.

class Comment(models.Model):
    type    = models.CharField(max_length=21, choices=OBJECT_TYPE_CHOICES)
    program = models.ForeignKey(Program, db_column='object_id', to_field='id', null=True, blank=True)
    article = models.ForeignKey(Article, db_column='object_id', to_field='id', null=True, blank=True)

Тип поля определяет, какое поле (программа или статья) будет активным. Но когда я пытаюсь добавить комментарий с помощью админ-панели Django, я получаю сообщение об ошибке: "Column 'object_id' specified twice". Я понимаю, почему возникает эта ошибка, но не понимаю, как ее исправить.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Этот тип поведения не поддерживается Django.Даже если вам удалось это сделать, это грязный, грязный взлом, который приведет к тому, что любой разработчик будет настолько ругаться на вас, что может оказаться настолько неудачным, чтобы наследовать ваш код.: https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#generic-relations

1 голос
/ 17 ноября 2011

Проблема в том, что вы используете одно и то же имя для двух столбцов в базе данных, я думаю, вы должны использовать это:

https://docs.djangoproject.com/en/1.3/ref/contrib/contenttypes/

...