Django查询链接的外键



你好,我正在学习Django ORM查询,并在外键中找出反向关系。我无法在外键字段中看到_set,希望我能在这里被清除。这是我一直在做的模特。

class Location(BaseModel):
name = models.CharField(
max_length=50,
validators=[validate_location_name],
unique=True,
)

我的路线模型与位置链接为FK:

class Route(BaseModel):
departure = models.ForeignKey(
Location,
on_delete=models.PROTECT,
related_name='route_departure'
)
destination = models.ForeignKey(
Location,
on_delete=models.PROTECT,
related_name='route_destination'
)

类似地,我有Bus Company Route链接的外键与Route

class BusCompanyRoute(BaseModel):
route = models.ForeignKey(Route, on_delete=models.PROTECT)

最后,我将Schedule模型与BusCompanyRoute链接为Fk

class Schedule(BaseModel):
bus_company_route = models.ForeignKey(BusCompanyRoute, on_delete=models.PROTECT)

问题是,我想从Schedule模型上的视图中查询,想与departuredestination链接,我将如何做到这一点?到目前为止,我只在view.py上做过这件事

schedule = Schedule.objects.all()

我一直在查询链式外键

您可以简单地尝试如下:

Schedule.objects.filter(bus_company_route__route__departure__name="A", bus_company_route__route__destination__name="B")

有关更多信息,请参阅如何在Django中进行查找。

我将继续您的代码,因为看起来一切都很好

schedule = Schedule.objects.all()
for s in schedule:
current_schedule_route = s.bus_company_route.route
departure = current_schedule_route.destination.name
destination = current_schedule_route.destination.name
print(departure, '->', destination)

您不需要反向关系从时间表查询出发地和目的地

在中可以找到反向关系及其用例的简单解释

相关内容

  • 没有找到相关文章

最新更新