Как отфильтровать имя пользователя из связанной модели в форме фильтра Django

Я хочу отфильтровать первое имя пользователя из моей модели профиля, используя 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]
Вернуться на верх