我有一个约会,人和办公室模型。我知道使用FOREIGN_KEY.to_field来匹配除pk以外的东西,但是我如何使它与office_id匹配呢?我正在使用mysql,并希望最小化任何架构更改。
换句话说,如果我需要appointment.person,那么它应该返回约会。有person.office = office.office_id的人。
我相信这是关于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
答案 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字段的原因。