python - 使用 django-filter 按名字或姓氏过滤

标签 python django-filter

我需要按名字或姓氏搜索用户表过滤。

给定用户 John Doe Smith,其中 John 是名字,Doe Smith 是姓氏。

当我搜索 John Smith 时,它应该会找到上面的用户。

我知道这只是实现 this SO answer 的解决方案的问题,但我如何在 django-filter 中做到这一点并保留其他过滤器字段,如 emailphone还 ?
patient.py (仅相关部分)

class Patient(TimeStampedModel):
    name = models.CharField('Name', max_length=30)
    last_name = models.CharField('Last Name', max_length=30)
    phone = models.CharField('Phone', max_length=14)

最佳答案

我刚刚发现 method参数是我要找的found here

基本上我的代码是这样结束的:

class PatientFilter(FilterSet):
    name = CharFilter(name='name', lookup_expr='icontains')
    last_name = CharFilter(name='last_name', lookup_expr='icontains')
    phone = CharFilter(name='phone', lookup_expr='icontains')
    full_name = CharFilter(name='full_name', method='search_by_full_name')

    def search_by_full_name(self, qs, name, value):
        for term in value.split():
            qs = qs.filter(Q(name__icontains=term) | Q(last_name__icontains=term))
        return qs

    class Meta:
        model = Patient
        fields = ['name', 'last_name', 'phone']

关于python - 使用 django-filter 按名字或姓氏过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46009449/

相关文章:

python - SWIG Python 默认参数

python - Pandas - 制作列 dtype 对象或因子

python - 在 python 程序中引发手动异常会终止它吗?

python-3.x - 如何从 django-filter 的 generic.ListAPIView 类中获取请求对象?

django - 使用 django-filter 查询多个字段,每个字段都有一个自定义方法

django-filter - 如何使用 django_tables2 在同一基于类的 View 中定义两个或多个表

python - 如何将 stdout 和 stderr 重定向到管道但保持有序

python - Django-filter 和 Django-tables2 CheckBoxColumn 兼容性

Django-filter:按模型属性过滤

python - 在 python 中使用 requests 发布到 html 表单?