有没有一种更清洁的方法可以用Django-ORM连接过滤器?

2024-06-25 05:57:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在做这个:

Model.objects.filter(key1=value1)\
             .exclude(key2=value2)\
             .order_by('key3')\
             .select_related(depth=1)

但我讨厌\。有更干净的款式吗?在


Tags: bymodelobjectsorderfilterselectexcludekey2
3条回答

就像伊格纳西奥说的,但是你也可以关闭下一行的parens,而不是包装整个东西。在

Model.objects.filter(key1=value1
              ).exclude(key2=value2
              ).order_by('key3'
              ).select_related(depth=1)

Parens将阻止Python在关闭之前将其拆分。在

(
  Model.objects.filter(key1=value1)
               .exclude(key2=value2)
               .order_by('key3')
               .select_related(depth=1)
)

或者,您可以利用Django QuerySet操作是累积的、懒惰的这一事实:

 myobjects = Model.objects.filter(key1=value1)
 myobjects = myobjects.exclude(key2=value2)
 myobjects = myobjects.order_by('key3')
 myobjects = myobjects.select_related(depth=1)

相关问题 更多 >