我有一个模型 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)
