1
我正在使用tastypie爲我的django應用程序獲取REST API。我的模型包括車站(例如火車站),路線(例如芝加哥到聖路易斯)和路線尾巴,這是許多關係的中間模型,例如, RouteDetail(站= 「斯普林菲爾德-IL」 路線= 「CHI-STL」,ARRIVAL_TIME = 16:00,depart_time = 4:下午5點)django查詢manytomany字段
class Station(models.Model):
name = models.CharField(max_length=10, unique=True)
class Route(models.Model):
name = models.CharField(max_length=10, unique=True)
stations = models.ManyToManyField(Station, through='RouteDetail')
class RouteDetail(models.Model):
station = models.ForeignKey(Station)
route = models.ForeignKey(Route)
arrival_time = models.TimeField(blank=True, null=True)
depart_time = models.TimeField(blank=True, null=True)
我的問題是我怎麼可以查詢從林肯,IL的所有路由去密蘇里州聖路易斯? 現在我在tastypie中做了這樣的工作,但是有一種方法可以在一個查詢中完成它?
from_station = request.GET.get('from', None)
to_station = request.GET.get('to', None)
semi_filtered = super(RouteResource, self).apply_filters(request, applicable_filters)
return semi_filtered.filter(stations__name=from_station).filter(stations__name=to_station)
你是對的我需要比較arrival_time來確定它是否是A到B.我沒有包括這個,因爲我想專注於減少查詢過濾from和to兩次。無論如何,如果我後來發現這個操作是瓶頸的話,那麼你對原始SQL的建議似乎是合理的選擇。謝謝。 –