Есть ли способ динамически использовать django FilterSet из библиотеки django_filters, чтобы второй раскрывающийся список зависел от первого, третий - от первого и второго и т. Д.Допустим, у меня есть следующий models.py
:
class CSV4(models.Model):
var1 = models.CharField(max_length=100)
var2 = models.CharField(max_length=100)
var3 = models.CharField(max_length=100)
var4 = models.CharField(max_length=100)
var5 = models.CharField(max_length=100)
var6 = models.CharField(max_length=100)
var7 = models.CharField(max_length=100)
var8 = models.CharField(max_length=100)
var9 = models.CharField(max_length=100)
class CSVFilter(django_filters.FilterSet):
entries = CSV5.objects.values_list('val1', flat = True).distinct()
val1_choice = [(e, e) for e in entries]
#print("e" , val1_choice)
val1 = django_filters.ChoiceFilter(choices = val1_choice)
entries = CSV5.objects.values_list('val2', flat=True).distinct()
val2_choice= [(e, e) for e in entries]
val2= django_filters.ChoiceFilter(choices=val2_choice)
entries = CSV5.objects.values_list('val3', flat=True).distinct()
val3_choice= [(e, e) for e in entries]
val3= django_filters.ChoiceFilter(choices=val3_choice)
entries = CSV5.objects.values_list('val4', flat=True).distinct()
val4_choice = [(e, e) for e in entries]
val4 = django_filters.ChoiceFilter(choices=val4_choice)
мой views.py
def filter_port(request):
instance = CSV5.objects.values()
user_filter = CSVFilter(request.POST or None, queryset=instance)
шаблон:
{% if user.is_authenticated %}
<form method="POST" id = "form1">
{% csrf_token %}
{{ filter.form }}
<button name="filter_port" type="submit">Search</button>
</form>
<ul>
{% for excel5 in filter.qs %}
<li>
{{ excel5.val5 }} - {{ excel5.val6 }} - {{ excel5.val7 }}
- {{ excel5.val8 }} - {{ excel5.val9 }}
<a href = "{% url 'appp:edit_results' excel5.id %}">
<button>Edit</button>
</a>
</li>
{% endfor %}
</ul>
{% endif %}
return render(request, 'appp/filter_port.html', {'filter': user_filter})
Так что в основном я выбираю val1 ввыпадающий и получить только те значения поля val2, которое существует в базе данных, связанной с val1.
Пример:
Допустим, моя база данных выглядит следующим образом:
1,2,3,4
5,6,7,8
1,3,4,5
5,7,8,9
Iвыберите 1 в качестве val1 в первом раскрывающемся списке и теперь вместо 2,6,3 и 7 в качестве val2 (второй раскрывающийся список) я хотел бы отображать только значения 2 и 3, поскольку они «принадлежат» значению 1. НадеюсьПонятно, что мне нужно.Любая помощь будет оценена.