Есть ли способ в Django создать зависимое выпадающее меню без использования ForeignKeys?
Допустим, у меня есть следующая модель:
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)
Так что var2 должен зависеть от того, что было выбрано в var1 и т. Д.
Я пробовал это в своих фильтрах.py и фильтр работает, он просто не зависит:
class CSVFilter(django_filters.FilterSet):
entries = CSV.objects.values_list('var1', flat = True).distinct()
var1_choices = [(e, e) for e in entries]
#print("e" , var1_choices )
var1= django_filters.ChoiceFilter(choices = var1_choices )
entries = CSV.objects.values_list('var1', flat=True).distinct()
var2_choices = [(e, e) for e in entries]
var2= django_filters.ChoiceFilter(choices=var2_choices )
var3= CSV.objects.values_list('var3', flat=True).distinct()
var3_choices = [(e, e) for e in entries]
var3= django_filters.ChoiceFilter(choices=var3_choices )
var4= CSV.objects.values_list('var4', flat=True).distinct()
var4_choices = [(e, e) for e in entries]
var4= django_filters.ChoiceFilter(choices=var4_choices )
А в шаблоне:
<form method="POST">
{% csrf_token %}
{{ filter.form }}
<button type="submit">Search</button>
</form>
<ul>
{% for i in filter.qs %}
<li>
{{ i.var1}} - {{ i.var2}} - {{ i.var3}}
- {{ i.var4}}
<a href = "{% url 'appp:edit_results' i.id %}">
<button>Edit</button>
</a>
</li>
{% endfor %}
</ul>
Так что в принципе у меня два вопроса:
Есть ли способ (в идеале без использования большого количества javascript) создать зависимое раскрывающееся меню без использования ForeignKeys и только одной модели?
Есть ли способ толькоотобразить отфильтрованные результаты в шаблоне.С моим текущим решением все записи отображаются и получают меньше, поскольку я фильтрую.Я хотел бы отображать только выпадающие фильтры, а при фильтрации отображать результаты и не загружать все записи при каждом посещении страницы.