NiPa
NiPa

Reputation: 93

DjangoFilters Add filter from another model

I modified my DjangoTables class to this

class Mark_Table(tables.Table):
    teacher = tables.Column(accessor='id_subject.id_teacher.name')
    group = tables.Column(accessor='id_student.id_group.name')
    course = tables.Column(accessor='id_student.id_group.id_course.course')
    curator = tables.Column(accessor='id_student.id_group.curator.name')
    class Meta:
        model = Mark
        fields = ['id_student', 'id_subject','mark' ,'teacher', 'group', 'course', 'curator',]
        attrs = {'class': 'paleblue'}

I have filters for it

class Mark_Filters(filters.FilterSet):
    class Meta:
        model = Mark
        fields = '__all__'

but they work only for fields which are in model Mark. How can i add filters to another models, but in same view. I would like filters to this fields: Teacher. name, Group. name, Course. course, Curator. name, Is there any accessors for filters or something like this. didn`t find anything in DjangoFilters documentation. Thanks in advance

My models

Upvotes: 1

Views: 625

Answers (1)

NiPa
NiPa

Reputation: 93

I found the answer. Model choice filters and Model multiple choice filter can solve my problem. It will look like this.

class Mark_Filters(filters.FilterSet):
teacher_name = filters.ModelChoiceFilter(
    name='id_subject_id__id_teacher__name',
    to_field_name='name',
    queryset=Teacher.objects.all(),
)
group_name = filters.ModelChoiceFilter(
    name='id_student_id__id_group__name',
    to_field_name='name',
    queryset=Group.objects.all(),
)
course = filters.ModelMultipleChoiceFilter(
    name='id_student_id__id_group__id_course__course',
    to_field_name='course',
    queryset=Course.objects.all(),
)
curator_name = filters.ModelChoiceFilter(
    name='id_student_id__id_group__curator',
    to_field_name='curator',
    queryset=Group.objects.all(),



)
class Meta:
    model = Mark
    fields = ['teacher_name', 'id_student', 'id_subject', 'mark', 'course', 'curator_name',]

Upvotes: 1

Related Questions