2016-04-06 5 views
0

は、私は3つのテーブルがあります。。並べ替えのための正しい方法?

class Specialist(models.Model) : 
    rating = models.FloatField(default=0.0) 

class Service(models.Model) : 
    parent_id = models.IntegerField(null=True, blank=True) 

class SpecialistPrice(models.Model) : 
    specialist = models.ForeignKey(Specialist, related_name='price') 
    service = models.ForeignKey(Service, related_name='service') 
    price_bottom = models.PositiveSmallIntegerField(null=True, blank=True) 

をそして私は、私はアドバイスを必要とするSpecialistPrice.price_bottomSpecialistPrice.service.parent_id=0と第二ソート条件-rating

最小で専門家をソートする必要があります。

UPD 私が作った:

queryset = queryset.annotate(min_price=Min('price__price_bottom')).order_by('min_price', '-rating') 

をしかし、生のSQLが正常に動作しているエラー

Cannot resolve keyword 'min_price' into field. 

を得ました。

SELECT `specialist`.`id`, `specialist`.`rating`,MIN(`specialistprice`.`price_bottom`) AS `min_price` FROM `specialist` LEFT OUTER JOIN `specialistprice` ON (`specialist`.`id` = `specialistprice`.`specialist_id`) GROUP BY `specialist`.`id` ORDER BY `min_price` ASC, `rating` DESC; 

答えて

0

lookups that span relationshipsについてお読みください。 このクエリはあなたのために役立ちます:

Specialist.objects.filter(price__service__parent_id=0).order_by('price', '-rating') 
+0

@ isle2005 look UPD pls。 スペシャリストごとに最低限のspeliastprice.price_bottomが必要です –

関連する問題