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

how to use more than one foreign key in mapping django models

我有约会、人员和办公模式。我知道使用 FOREIGN_KEY.to_field 来匹配 pk 以外的东西,但我如何让它也与 office_id 匹配?我正在使用 mysql 并希望尽量减少任何架构更改。

换句话说,如果我需要 appointment.person,那么它应该 return appointment.person 有 person.office = office.office_id.

我相信这是关于 django 中的复合键,这是 not supported by the ORM. There is something called the 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

为什么在 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 字段。