【问题标题】:How to filter users first name from related model in Django filter form如何在 Django 过滤器表单中从相关模型中过滤用户名
【发布时间】:2021-11-27 15:48:54
【问题描述】:

我想使用 Django filter 从我的个人资料模型中过滤用户的名字
这是我在 models.py 中的个人资料模型。

from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    total_members = models.CharField(max_length=500, blank=True)
    ...other fields

这是我的filters.py

import django_filters
from .models import Profile

class ProfileFilter(django_filters.FilterSet):

    class Meta:
        model = Profile
        fields = '__all__'

当我将表单添加到模板时,它会为我提供带有所有用户用户名的选择标签,我不希望这样,因为如果用户想按用户名过滤用户,那么他们可以按他们的姓名搜索而不是在 drop 中查找下来。
请帮帮我(:

【问题讨论】:

    标签: python django django-forms django-filter


    【解决方案1】:

    我得到了解决方案,我刚刚在我的 Django 过滤器表单中添加了一个文件,并通过 Double Underscore (Name Mangling) 访问了相关文件 user__first_name 这是我的代码的更改版本

    import django_filters
    from .models import Profile
    
    class ProfileFilter(django_filters.FilterSet):
        first_name = django_filters.CharFilter(
            label="First Name",
            field_name="user__first_name",
            lookup_expr='icontains',
            widget=forms.TextInput(attrs={
                'placeholder': 'First Name',
                'class': 'form-control',
                'type': 'text'
            })
        )
    
        class Meta:
            model = Profile
            fields = ['first_name', ...other fields]
    

    【讨论】:

      猜你喜欢
      • 2017-06-22
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 2020-10-24
      相关资源
      最近更新 更多