【问题标题】:django filter field locator challengesdjango过滤器字段定位器挑战
【发布时间】:2012-04-15 02:24:50
【问题描述】:

如果我来自表单提交的 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”,它与人员对象中的 first_name 或 last_name 都不匹配。

请帮助初学者。谢谢!

【问题讨论】:

    标签: django django-views django-filters


    【解决方案1】:

    你可以这样使用:

    从 django.db.models 导入 Q ... 对于 post_data.split() 中的 w: qs = qs.filter(Q(first_name__icontains=w)|Q(last_name__icontains=w))

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

    【讨论】:

    • 谢谢!我使用了您的方法并进行了一些定制,能够解决问题。
    猜你喜欢
    • 1970-01-01
    • 2017-11-13
    • 2017-03-05
    • 2010-12-15
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    相关资源
    最近更新 更多