Как отфильтровать имя пользователя из связанной модели в форме фильтра 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]