django过滤器现场定位器挑战

时间:2012-03-31 20:11:23

标签: django django-views django-filters

如果来自表单提交的POST数据=“John Doe”,并且我正在尝试将其与此模型中的对象匹配:

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

我该怎么做?

我试过了:

person = Person.objects.filter(last_name__in=post_data,first_name__in=post_data)

它不起作用,因为“__in”字段定位器正在查找列表。

我试过了:

    person = Person.objects.filter(last_name__in=list(post_data),first_name__in=list(post_data))

它不起作用,因为我创建了一个单项列表,其项目为“John Doe”,它与person对象中的first_name或last_name不匹配。

请帮助初学者。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

    from django.db.models import Q
    ...
    for w in post_data.split():
      qs = qs.filter(Q(first_name__icontains=w)|Q(last_name__icontains=w))

它拆分输入字符串,并将每个单词与first_name或last_name匹配。