私はTransportationOrdersのテーブルを持っています。すべてのTransportationOrderにはルートがあり、すべてのルートにはプレイスがあります。Django Rest Frameworkの多くの属性からの注文
私が必要とするのは、すべての運送費明細書ですが、私が訪れなければならない最初の場所の名前で並べ替えられています。
私のモデルを簡素化:
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 にしてみてくださいWHEこれは動作しません。どのようなオプションがありますか?
def first_place_name(self):
place = Place.objects.all().filter(placehastransportationorder__transportation_order=self, placehastransportationorder__order=1)
return place[0].name
非常に有益な答えです。私の悪い説明には申し訳ありません。私がfinnalyしたいのは、私のすべてのTransportationOrdersをリストすることです。しかし、最初に訪れなければならない場所の名前でソートされています。 (私はより明確にしようと編集するつもりです) – Marcelo
最終出力からvalues_list呼び出しを取得すると、その結果が得られます。私は経路のフィールドで場所を印刷するのは間違いですが、輸送の注文はあなたが望む順序になります。 – Neelik