Skip to main content
 首页 » 编程设计

python之返回所有对象的 Django ORM 过滤器默认值

2025年05月04日14shangdawei

我有一个模型 Book,它有一个字段 year_of_publishing。用户输入年份,我想过滤 Book 的集合,以获取当年出版的所有书籍。

year = self.cleaned_data.get('year', SOME_DEFAULT_VALUE) 
books = Book.objects.filter(year_of_publishing=year) 

但是用户可能会将 year 字段留空,我想输入一些默认值,在 .filter 函数中获取默认值 Django ORM 会返回所有书籍,例如这个过滤器根本不存在。我应该使用什么值?我想它应该是类型独立的,所以我可以将它用于 Char-、Choice- 和其他类型的字段。

请您参考如下方法:

您可以将空字典传递给 .filter() 以返回所有结果,或过滤您想要的字段/值:

filters = {} 
 
year = request.GET.get('year') 
if year: 
    filters['year'] = year 
 
books = Book.objects.filter(**filters)