【发布时间】:2020-01-29 10:46:04
【问题描述】:
所以,我开始为我的 django 应用程序编写一个过滤系统。是这样的
class Person(models.Model):
first_name = models.CharField(max_length = 50)
middle_name = models.CharField(max_length = 50)
last_name = models.CharField(max_length = 50)
如果其他字段为空,我想过滤哪个 Person 的字段包含 x 值,就像这个算法一样
results = Person.objects.filter(first_name__contains = "a")
但如果其他字段不为空,我想像这样过滤它
results = Person.objects.filter(first_name__contains = "a", middle_name__contains = "a", last_name__contains = "a")
取决于哪些字段没有空值。
我的第一次尝试是这样的:
if first_name != "":
results = Person.objects.filter(first_name__contains = first_name)
if middle_name != "":
results = results.filter(middle_name__contains = middle_name)
if last_name != "":
results = results.filter(last_name__contains = last_name)
我的问题是它按顺序过滤它,所以如果我只过滤middle_name 或只过滤last_name,它会返回一个错误,因为results 尚未定义,有人可以帮我解决这个问题吗?
有这样的算法吗?
results = Person.objects.filter(first_name__contains = first_name if first_name != "" else JUST REMOVE THIS FILTER)?
因为如果它过滤 "" 它将返回您的所有数据。提前谢谢你
【问题讨论】:
标签: django django-models