Enhance CaseFilter to show distinct examination values for series, improving clarity in selection options

This commit is contained in:
Ross
2026-02-02 12:14:16 +00:00
parent 7342b11b27
commit 8911c09c0e
+6 -1
View File
@@ -2,6 +2,7 @@ import django_filters
from django import forms from django import forms
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Field from crispy_forms.layout import Layout, Div, Field
from collections import OrderedDict
from .models import ( from .models import (
Case, Case,
@@ -98,8 +99,12 @@ class CaseFilter(django_filters.FilterSet):
author = django_filters.ModelMultipleChoiceFilter( author = django_filters.ModelMultipleChoiceFilter(
queryset=get_authors, null_label="No author" queryset=get_authors, null_label="No author"
) )
# Show a distinct list of `Series.examination` values instead of raw Series
# entries so examinations that differ only by plane/description appear once.
series = django_filters.ModelMultipleChoiceFilter( series = django_filters.ModelMultipleChoiceFilter(
queryset=get_series, null_label="No series" field_name='series__examination',
queryset=lambda request: __import__('generic.models', fromlist=['Examination']).Examination.objects.filter(atlas_series_examination__isnull=False).distinct(),
label='Examination',
) )
differential_case = django_filters.ModelMultipleChoiceFilter( differential_case = django_filters.ModelMultipleChoiceFilter(
label="Differential", label="Differential",