Вы можете попробовать использовать автозаполнение django light.Вот документы .
. Это даст вам возможность отображать параметры в дочернем фильтре на основе выбора в родительском фильтре с помощью его параметра forward
.
Создайте класс формы с настраиваемым полем компании, а затем перенаправьте поле в фильтр отдела следующим образом:
class EmployeeForm(forms.ModelForm):
company = forms.ModelChoiceField(queryset=Company.objects.all(),
widget=autocomplete.ModelSelect2(url='your_company_auto_url'),
required=False)
department = forms.ModelChoiceField(queryset=Department.objects.all(),
widget=autocomplete.ModelSelect2(url='your_department_auto_url',
forward=['company']))
class Meta:
model = Employee
fields = '__all__'
Вид отдела:
class DepartmentAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
if not self.request.user.is_authenticated():
return Department.objects.none()
qs = Department.objects.all()
company = self.forwarded.get('company', None)
if company:
qs = qs.filter(company=company)
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
Это перенаправит выбранное company
id и затем его можно использовать в представлении автозаполнения для фильтрации набора запросов отдела.Пожалуйста, обратитесь к документации для создания представлений автозаполнения, которые будут использоваться для полей в форме.
Надеюсь, это поможет.