0

我看到的所有示例都有 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)
4

2 回答 2

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'>

它们都是查询集

于 2013-06-13T09:30:34.460 回答
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 的查询集。

于 2013-06-13T09:27:27.057 回答