我看到的所有示例首先选择select_related(),然后调用filter(),如下所示:
MyModel.objects.select_related().filter()
我可以吗
qs = MyModel.objects.filter(my_field=my_var)
qs = qs.select_related().filter(my_foreign_key_field=another_var)
答案 0 :(得分:1)
是的,你可以 如你所见:
type(MyModel.objects.filter(pk=1))
<class 'django.db.models.query.QuerySet'>
type(MyModel.objects.filter(pk=1).select_related())
<class 'django.db.models.query.QuerySet'>
type(MyModel.objects.filter(pk=1).select_related().filter(name='test'))
<class 'django.db.models.query.QuerySet'>
所有这些都是QuerySets
答案 1 :(得分:0)
我刚在shell中测试过它:
>>> from myApp.models import Unit_type, Transaction
>>> u = Unit_type.objects.get(pk=1)
>>> t = Transaction.objects.filter(unit_type=u)
>>> t = t.select_related().filter(transaction_end_status='R')
它没有给我一个错误,并给了我一个长度为1的查询集。