2011-11-16 1 views
0

다음 모델이 있습니다.외래 키에 두 번 지정된 필드

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) 

유형 필드 결정, 필드 (프로그램 또는 아티클)가 활성화됩니다. 하지만 장고 관리자 패널을 사용하여 의견을 추가하려고하면 오류가 발생합니다. "Column 'object_id' specified twice".이 오류가 발생하는 이유를 이해하지만 해결 방법을 모르겠습니다. 당신이 데이터베이스에있는 두 개의 열이 같은 이름을 사용하고 있기 때문에 문제가

답변

2

행동이 유형의 장고를 지원하지 않습니다. 비록 당신이 그것을 달성 할 수 있었다고하더라도, 그것은 더럽고, 더러운 해킹이며, 당신의 코드를 상속받을 정도로 불행한 개발자에 의해 당신에게 많은 저주를 가져올 것입니다.

콘텐츠 유형 프레임 워크를 사용하십시오. 구체적으로 GenericForeignKeys : https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#generic-relations