Django - 在多个模型中搜索'slug'的存在



我想在 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')

有几点值得注意:

  • 这将为每个模型执行一个数据库查询
  • 两种方法都获取所有模型的所有匹配对象
  • 结果是列表,而不是查询集

最新更新