【发布时间】:2015-04-22 20:27:42
【问题描述】:
我有一个约会、人员和办公室模型。我知道使用 FOREIGN_KEY.to_field 来匹配 pk 以外的其他内容,但是我如何使它也匹配 office_id?我正在使用 mysql,并且希望尽量减少任何架构更改。
换句话说,如果我需要 Appointment.person,那么它应该返回具有 person.office = office.office_id 的 Appointment.person。
我相信这是关于 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
【问题讨论】:
-
你的最终目标是什么?您想限制创建
Appointment的人来自另一个办公室而不是约会中的人?那么想想如果有人换了办公室会发生什么?我相信你不想改变过去的任命办公室。如果您不想跟踪约会的地点,那么您可以从中删除办公室 FK,您有这个人,所以您有约会的办公室?或者您想进行查询,仅过滤将在人员办公室中的约会?
标签: python mysql django database-design sqlalchemy