你好,我正在学习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模型上的视图中查询,想与departure
和destination
链接,我将如何做到这一点?到目前为止,我只在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)
您不需要反向关系从时间表查询出发地和目的地
在中可以找到反向关系及其用例的简单解释