Ale*_*erg 2 django django-orm django-queryset
现在我有一个Django查询集,我想根据另一个查询集的结果进行筛选.现在我这样做(并且它有效):
field = 'content_object__pk'
values = other_queryset.values_list(field, flat=True)
objects = queryset.filter(pk__in=values)
Run Code Online (Sandbox Code Playgroud)
其中字段是一个外键的名字pk在queryset.ORM非常智能,可以运行上面的一个查询.
我试图简化这个(即过滤对象列表自己而不是明确说pk):
field = 'content_object'
objects = queryset & other_queryset.values_list(field, flat=True)
Run Code Online (Sandbox Code Playgroud)
但是这会产生以下错误:
AssertionError: Cannot combine queries on two different base models.
Run Code Online (Sandbox Code Playgroud)
进行此类过滤的正确方法是什么?
你可以做下一个:
result = MyModel.objects.filter(field__in=other_query)
Run Code Online (Sandbox Code Playgroud)
结果将是模型中的对象,其中字段是other_query中模型的外键
mic*_*man -3
你可以在 Django 中链接查询...
qs = entry.objects.filter(...).filter(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3971 次 |
| 最近记录: |