@KatyaBychko

Как использовать django-filter с полем ForeignKey?

Подскажите, пожалуйста, использую django-filter на модель Students с полем ForeignKey на Group (ниже код) . Фильтр работает только по id модели Group , как подправить чтобы по полю name осуществлять фильтр ?
# models.py
class Students(models.Model):
    group = models.ForeignKey(Group)
    fullname = models.CharField()

#filter.py
class StudentsFilter(django_filters.FilterSet):
    fullname = CharFilter(lookup_expr='icontains')
    group = ModelChoiceFilter(queryset=Group.objects.all())

#views.py
def test(request):
    groups = Group.objects.all()
    filtered_students = StudentsFilter(request.GET, queryset=Students.objects.all())
    return render(request, 'students.html', {'filtered_students': filtered_students, 'groups': groups})

#students.html
<div>
<input name='fullname'>
<select name='group'>
{% for group in groups %}
    <option value='{{group.id}}'>{{group.id }}</option>
{% endfor %}
</select>
</div>
  • Вопрос задан
  • 1441 просмотр
Решения вопроса 1
iggor-markin
@iggor-markin
Python Developer
В документации есть пример использования:

from django.db import models

class Product(models.Model):
    ...
    manufacturer = models.ForeignKey(Manufacturer)
    ...


class ProductFilter(django_filters.FilterSet):
    ...
    manufacturer__name = django_filters.CharFilter(lookup_expr='icontains')
    ...

    class Meta:
        model = Product
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы