【发布时间】:2019-06-17 08:28:05
【问题描述】:
我有 3 个模型及其关系:
class Itinerary(models.Model):
origin_dest = models.CharField(max_length=200, blank=False, default="")
travelers = models.ManyToManyField('Traveler')
flights = models.ManyToManyField('Flight')
class Traveler(models.Model):
pass
class Flight(models.Model):
pass
一个行程包含一个或多个航班(经停与直达),并且一个航班可以属于多个行程。此外,一个旅行者可以有许多行程,而一个行程可以有许多旅行者。原因如下:
假设traveler 1 有一架从 JFK-LAX 起飞的航班,在 MIA 有 1 站。然后行程将有2个航班(JFK-MIA,MIA-LAX)。现在假设我们有另一个人,traveler 2,他的行程来自 MIA-LAX,与来自 MIA-JFK 的traveler 1 相同(不同的行程实例,但共享相同的航班)。因此,在这种情况下,有 2 个行程,其中一个航班 (MIA-LAX) 属于这两个行程,因此是 ManyToMany 关系。
现在,我最理想的做法是通过行程模型查询乘坐特定航班的所有旅客。大概是这样的:
flight.itinerary_set.travelers #=> return the number of travelers that are on that specific flight.
【问题讨论】:
-
我认为它必须分两个阶段完成,第一个用于行程,第二个用于旅行者
-
当然。我可以查询行程,然后为每个人抓住旅行者,但我想知道是否有一个很好的方法可以通过 Django 的 ORM 来做到这一点。