Django中一个关系的多个外键

时间:2011-07-12 13:04:27

标签: django django-models foreign-keys composite-primary-key

我有两个像这样的django模型:

class Review(models.Model):
    ...
    grade_value_order = models.ForeignKey('GradeValues', db_column="WART_OC_KOLEJNOSC",  related_name="REC_WART_OC_FK")
    grade_type = models.ForeignKey('GradeValues', db_column="TOC_KOD", related_name="REC_WART_OC_FK")

    class Meta:
        ...
        managed = False

class GradeValues(models.Model):
    grade_order = models.IntegerField(db_column="KOLEJNOSC", primary_key=True)
    grade_type = models.ForeignKey('GradeType', db_column="TOC_KOD", primary_key=True)
    ...

如您所见,GradeValues类中有2个主键,Review中有2个外键。他们应该在GradeValues和Reviews之间保持一对多的关系。但它不起作用。怎么逼这个?我使用只读Oracle数据库,所以我无法修改任何内容。

1 个答案:

答案 0 :(得分:0)

我没有尝试过您所描述的内容,但我认为您根本不需要更改底层数据库。

您需要在GradeValues与其自身[1]之间明确创建多对多关系,并将Review指定为中间表[2]

[1] https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.symmetrical

[2] https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships

在那些文档页面和某些游戏中的某个地方,我想你可能会找到答案。

相关问题