Django - зависимый выпадающий фильтр без использования ForeignKeys - PullRequest
0 голосов
/ 01 февраля 2019

Есть ли способ в 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>

Так что в принципе у меня два вопроса:

  1. Есть ли способ (в идеале без использования большого количества javascript) создать зависимое раскрывающееся меню без использования ForeignKeys и только одной модели?

  2. Есть ли способ толькоотобразить отфильтрованные результаты в шаблоне.С моим текущим решением все записи отображаются и получают меньше, поскольку я фильтрую.Я хотел бы отображать только выпадающие фильтры, а при фильтрации отображать результаты и не загружать все записи при каждом посещении страницы.

...