Django Queryset按order_by与relatedManager排序

时间:2013-04-20 07:44:45

标签: python database django django-related-manager

我正在尝试将对象排序。这是我的代码:

ratings = Rate.objects.order_by(sortid)
locations = Location.objects.filter(locations_rate__in=ratings).order_by('locations_rate').distinct('id')

这是我的模特:

class Rate(models.Model):
  von_location= models.ForeignKey(Location,related_name="locations_rate")
  price_leistung = models.IntegerField(max_length=5,default=00)
  bewertung = models.IntegerField(max_length=3,default=00)

如何按顺序获得与ratings相同的所有地点?

我上面所说的不起作用 编辑

def sort(request):
  sortid = request.GET.get('sortid')
  ratings = Rate.objects.all()
  locations = Location.objects.filter(locations_rate__in=ratings).order_by('locations_rate__%s' % sortid).distinct('id')
  if request.is_ajax():
    template = 'resultpart.html'
    return render_to_response(template,{'locs':locations},context_instance=RequestContext(request))

1 个答案:

答案 0 :(得分:2)

您必须指定用于对Rate个对象进行排序的字段,例如:

ratings = Rate.objects.all()
locations = Location.objects.filter(
    locations_rate__in=ratings
).order_by('locations_rate__%s' % sortid).distinct('id')

您无需事先对ratings进行排序。

documentation提供了在相关字段中使用order_by的示例。