我有一個TransportationOrders表。每個TransportationOrder都有一條路線,每條路線都有地方。Django Rest框架上的多個屬性排序
我需要的是列出所有TransportationOrders,但按照我必須訪問的第一個地方的名稱排序。
我的模型簡化:
class TransportationOrder(models.Model):
name = models.CharField(max_length=45, unique=True)
user = models.ForeignKey('auth.User')
description = models.CharField(max_length=300, blank=True, null=True)
route = models.ManyToManyField(Place, through='PlaceHasTransportationOrder')
class PlaceHasTransportationOrder(models.Model):
place = models.ForeignKey(Place, on_delete=models.CASCADE)
transportation_order = models.ForeignKey(TransportationOrder, related_name="route", on_delete=models.CASCADE)
order = models.IntegerField(default=1) #This indicate the order of visits
date = models.DateField()
class Place(models.Model):
name = models.CharField(max_length=45)
address = models.CharField(max_length=45, null=True, blank=True, default=None)
lat = models.FloatField(null=True, blank=True, default=None)
lon = models.FloatField(null=True, blank=True, default=None)
我試圖定義上TransportationOrder模型的方法,但這不起作用磨片我嘗試http:///url?ordering=first_place_name 因爲這個排序工作在數據庫級別。我有什麼選擇?
def first_place_name(self):
place = Place.objects.all().filter(placehastransportationorder__transportation_order=self, placehastransportationorder__order=1)
return place[0].name
非常有用的答案,我很抱歉我的不好解釋。我非常想要的是列出我所有的TransportationOrders,所有這些。但按照我必須先訪問的地方名稱排序。 (我要編輯試圖更加清晰) – Marcelo
如果您將values_list取消爲最終輸出結果,那就是您將得到的結果。我犯了通過路線字段打印地點的錯誤,但運輸訂單將按照您的要求訂購。 – Neelik