如何从 Django 过滤器表单中的相关模型中过滤用户的名字
How to filter users first name from related model in Django filter form
我想使用 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__'
在这里,当我将我的表单添加到模板时,它会给我 select 标记所有用户的用户名,我不希望这样,因为如果用户想按名称过滤用户,他们可以按他们的搜索名称而不是在下拉列表中查找。
请帮助我 (:
我得到了解决方案我刚刚在我的 Django 过滤器表单中添加了一个文件并通过 双下划线(名称修改) 访问相关文件
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]
我想使用 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__'
在这里,当我将我的表单添加到模板时,它会给我 select 标记所有用户的用户名,我不希望这样,因为如果用户想按名称过滤用户,他们可以按他们的搜索名称而不是在下拉列表中查找。
请帮助我 (:
我得到了解决方案我刚刚在我的 Django 过滤器表单中添加了一个文件并通过 双下划线(名称修改) 访问相关文件
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]