Я бы хотел создать собственный горизонтальный фильтр внутри администратора Django. Мой вариант использования выглядит следующим образом. Я работаю над инструментом Testmanagment. Вы получили "Проекты", такие как websiteA или WebsiteB. Каждый проект имеет свои элементы / группы. Например, у WebsiteA есть «Dashboard» и «Login», а у WebsiteB есть «Users» и «Orders».
Если я создаю новый Testcase, я хотел бы сначала выбрать проект и предложить отфильтрованный список всем соответствующимЭлементы для этого проекта.
Я не хочу получать все элементы / группы для нового Testcase.
Мой код выглядит примерно так:
Forms.py:
class TestCaseForm(forms.ModelForm):
@staticmethod
def groupSmartFilter():
return GroupModel.objects.filter(id=2) #working fine so far
but should be something like
return Projects.objects.filter(projectname=<$project_from_dropdown>).groups()
def __init__(self, *args, **kwargs):
forms.ModelForm.__init__(self, *args, **kwargs)
self.fields['groups'].queryset = TestCaseForm.groupSmartFilter()
class Meta:
model = TestCaseModel
fields = ('name', 'TestcaseNummer', 'project','groups', 'description' , 'url' )
admin.py
class TestCaseAdmin(CompareVersionAdmin):
form = TestCaseForm
filter_horizontal = ('groups',)