我有一个 Django 模型,可以说:
class Person(models.Model):
first_name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
并且,存在一个搜索表单,我可以在其中搜索行,无论是按名字、姓氏还是两者。我注意到我可以在 django 查询集中链接过滤器,例如:
def search(request):
list = Person.objects.filter(first_name= val1).filter(last_name=val2)
但是如果值 val1, val2 之一为空呢?我应该做这样的事情:
def searh(request):
if val1 != null and val2 == null:
list = Person.objects.filter(first_name= val1)
if val2 == null and val2 != null:
list = Person.objects.filter(last_name= val2)
if val2 != null and val2 != null:
list = Person.objects.filter(first_name= val1).filter(last_name=val2)
有没有直接的方法可以做到这一点?
提前致谢
最佳答案
def search(request, val1, val2):
persons = Person.objects.all()
if val1:
persons = persons.filter(first_name=val1)
if val2:
persons = persons.filter(last_name=val2)
return persons
这有效(不是低效的),因为 Querysets are lazy 。
关于django - Django 中的条件嵌套过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6142001/