Python Django——寻找';slug';在多个模型中
我想在django的多个模型中同时搜索slug的存在,现在我必须逐个搜索所有模型。有什么方法可以一次搜索所有模型吗?没有,没有这种方法。您可以自己实现它:Python Django——寻找';slug';在多个模型中,python,django,Python,Django,我想在django的多个模型中同时搜索slug的存在,现在我必须逐个搜索所有模型。有什么方法可以一次搜索所有模型吗?没有,没有这种方法。您可以自己实现它: def filter_by_slug(models, slug): results = [] for model in models: results.extend(model.objects.filter(slug=slug)) return results 像这样使用它: >>>
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')
>>> filter_by_slug([MyModel, AnotherModel], slug='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], 'the_slug')
>>> filter_by_slug([MyModel, AnotherModel], slug='the_slug')
有几件事值得注意:
- 这将对每个模型执行一个数据库查询
- 这两种方法都会获取所有模型的所有匹配对象
- 结果是一个列表,而不是查询集