Python 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 像这样使用它: >>>

我想在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')
>>> 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')
有几件事值得注意:

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

您能显示您的搜索代码吗?你用postgres吗?然后,您可以使用全文搜索从我看到的,您有多个模型具有相同的字段“slug”。您需要使用Django提供的contenttype框架。