私はこの問題で立ち往生しています:
私は2つのモデルを持っています:
ロケーションとレート。
各ロケーションにはそれぞれのレートがあり、場合によっては複数のレートがあります。
料金の昇順で場所を取得したい。
明らかに、一緒order_by
に働かないでdistinct()
ください:
locations = Location.objects.filter(**s_kwargs).order_by('locations_rate__rate').distinct('id')
それから私はドキュメントを読み、に来ましたannotate()
。しかし、注釈の間に関数を使用する必要があるかどうかはわかりません。
私がこれを行う場合:
locations = Location.objects.filter(**s_kwargs).annotate(rate=Count('locations_rate__rate')).order_by('rate')
ただし、これはレートと注文を合計でカウントします。それらの料金の値で並べ替えられた料金で場所を取得したい。
私のモデル定義は次のとおりです。
class Location(models.Model):
name = models.TextField()
adres = models.TextField()
class Rate(models.Model):
location = models.ForeignKey(Location,related_name='locations_rate')
rate = models.IntegerField(max_length=2)
price_rate = models.IntegerField(max_length=2) #<--- added now
datum = models.DateTimeField(auto_now_add=True,blank=True) #<--- added now