我想在 django 中一次搜索多个模型中 slug 的存在,现在我必须逐个搜索所有这些模型。有没有办法一次搜索所有模型?
不,没有这样的方法。您可以自己实现它:
def filter_by_slug(models, slug):
results = []
for model in models:
results.extend(model.objects.filter(slug=slug))
return results
像这样使用它:
>>> filter_by_slug([MyModel, AnotherModel], 'the_slug')
更广义:
def filter_all(models, **query):
results = []
for model in models:
results.extend(model.objects.filter(query))
return results
你可以像这样使用:
>>> filter_by_slug([MyModel, AnotherModel], slug='the_slug')
有几点值得注意:
- 这将为每个模型执行一个数据库查询
- 两种方法都获取所有模型的所有匹配对象
- 结果是列表,而不是查询集