Django: Как определить модели, когда родительская модель имеет два внешних ключа, исходящих от одной и той же модели? - PullRequest
0 голосов
/ 08 июля 2010

Я хочу определить два поля модели: create_by ,ified_by в родительской модели, они будут действовать как общие поля для дочерних моделей.

class ExtendedModel(models.Model):
        created_by = models.ForeignKey(User,related_name='r_created_by')
        modified_by = models.ForeignKey(User,related_name='r_modified_by')
        class Meta:
                abstract = True

class ChildModel1(ExtendedModel):
        pass

class ChildModel2(ExtendedModel):
        pass

это приводит к ошибкам, так как ChildModel1 и ChildModel2 имеют связанные имя_столкновениядруг с другом в их полях созданных и измененных.

1 Ответ

3 голосов
/ 08 июля 2010

Документы Django объясняют, как обойти это: http://docs.djangoproject.com/en/dev/topics/db/models/#abstract-related-name

class ExtendedModel(models.Model):
        created_by = models.ForeignKey(User,related_name='"%(app_label)s_%(class)s_created_by')
        modified_by = models.ForeignKey(User,related_name='"%(app_label)s_%(class)s_modified_by')
        class Meta:
                abstract = True

class ChildModel1(ExtendedModel):
        pass

class ChildModel2(ExtendedModel):
        pass
...