Python 使用过滤的foreignkey进行Django排序

Python 使用过滤的foreignkey进行Django排序,python,sql,django,Python,Sql,Django,我有以下设置 class ModelA(Model): field = CharField() order = IntegerField() class Meta: ordering: ['order'] class UserOrder(Model): modela = ForeignKey(ModelA) user = ForeignKey(User) order = IntegerField() class Me

我有以下设置

class ModelA(Model):
    field = CharField()
    order = IntegerField()

    class Meta:
         ordering: ['order']

class UserOrder(Model):
    modela = ForeignKey(ModelA)
    user = ForeignKey(User)
    order = IntegerField()

    class Meta:
        unique_together = ['modela', 'user']
我想按UserOrder中存储的自定义顺序订购ModelA。我可以在SQL a中执行以下操作:

SELECT * FROM modela a 
  LEFT JOIN userorder uo ON a.id = uo.modela_id
  WHERE uo.user_id = 1
  ORDER BY uo.order ASC, a.order ASC;
这将首先按自定义订单订购,然后按默认订单订购

我目前过滤查询集,并在DB调用后对其排序,但我希望有一种方法可以使用Django ORM在一次调用中直接从DB中排序。

我总结:

ModelA.objects.filter(userorder__user__id=1).order_by('userorder__order', 'order')

这意味着,正如Daniel所写,您可以按照自己的意愿编写ORM,最后,一旦对queryset进行了评估,它将是一个单独的db调用

黑暗中拍摄:
ModelA.objects.filter(userorder\uu user\uu id=1)。order\u by('userorder\uu order','order')
?为什么您认为过滤后的排序不会是一个单独的db调用?上面两条评论所说的:)