我有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
有一架从肯尼迪机场飞往洛杉矶的航班,在迈阿密有一站。然后行程将有2个航班(JFK-MIA,MIA-LAX)。现在让我们假设我们有另一个人,traveler 2
他有一个从MIA-LAX来的行程,这个行程和从MIA-JFK来的航班是相同的(不同的行程实例,但是相同的航班是共享的)。因此,在本例中,有两个行程,其中一个航班(MIA-LAX)属于这两个行程,因此存在manytomy关系。你知道吗
现在我想做的理想情况是通过行程模型查询特定航班上的所有旅客。像这样的事情:
flight.itinerary_set.travelers #=> return the number of travelers that are on that specific flight.
您可能需要一个中间对象,例如
Booking
,它总是一个航班和一个旅行者。这样就不会有关于哪个旅行者在哪个航班上的混淆,这看起来是一个非常重要的区别,除非出于某种原因这在您的用例中不相关。你知道吗这种情况下的示例模型:
测试用例的部分输出如下。请注意,这将创建两个单独的行程,并在同一航班上进行独立预订。你知道吗
相关问题 更多 >
编程相关推荐