Django中是否有一种无需uisng 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中选择的内容,依此类推。
我在我的filters.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和一个Model?
是否有一种方法只能在模板中显示过滤的结果。使用我当前的解决方案,所有条目都会显示,并且在我进行过滤时会减少。我只想显示下拉过滤器,而每次进行过滤时都显示结果,而不是每次访问页面时都加载所有条目。