如何在映射django模型时使用多个外键

时间:2015-02-21 01:58:21

标签: python mysql django database-design sqlalchemy

我有一个约会,人和办公室模型。我知道使用FOREIGN_KEY.to_field来匹配除pk以外的东西,但是我如何使它与office_id匹配呢?我正在使用mysql,并希望最小化任何架构更改。

换句话说,如果我需要appointment.person,那么它应该返回约会。有person.office = office.office_id的人。

Imgur

我相信这是关于django中的复合键,这是ORM的not supported。我可以使用一些叫unique_together的东西,但仍然不确定如何。

class Person(models.Model):
    person_id    = models.IntegerField() # not pk
    office       = models.ForeignKey(Office)

class Appointment(models.Model):
    appointment_id    = models.IntegerField() # not pk
    office            = models.ForeignKey(Office)
    person            = models.ForeignKey(Person)

class Office(models.Model):
    # mystuff here

1 个答案:

答案 0 :(得分:2)

为什么在Person模型中使用person_id和pk,在Office模型中使用pk和office_id?我会这样做的方式:

class Office(models.Model):
    # office stuff here

class Person(models.Model):
    office = models.ForeignKey(Office)

class Apointment(models.Model):
    person = models.ForeignKey(Person)
    office = models.ForeignKey(Office)

由于django自动生成每个模型的pk,我没有看到添加这些_id字段的原因。