'Django Dependent/Chained Dropdown List in a filter
I am using Django to implement my web page; in this page I have a classic item list that I manage with a for loop. I also implement a filter as a form (with search button) to filter the items.
I know how can I implement a dropdown List (first code) and I know how can I implement a form filter (second code).
DROPDOWN LIST (JQUERY CODE)
<script>
$( document ).ready(function()
{
var $provvar = $("#provddl");
$uffvar = $("#uffddl");
$options = $uffvar.find('option');
$provvar.on('change',function()
{
$uffvar.html($options.filter('[value="'+this.value+'"]'));
}).trigger('change');
});
</script>
FORM FILTER
<form>
<div>
<label>C: </label>
{{ myFilter.form.C }}
</div>
<div>
<label>D: </label>
{{ myFilter.form.D }}
</div>
<button type="submit">Search</button>
</form>
My problema is that I don't know how can I implement a the Dependent Dropdown List in my filter.
Solution 1:[1]
I can't comment So I am saying what I know. did you want to chain D with C, for that you can use foreign key for D, and load the data of D with ajax using C's id. example:
models.py:
class C(models.Model):
id = models.PositiveIntegerField(primary_key=True)
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class D(models.Model):
c= models.ForeignKey(C, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
def __str__(self):
return self.name
Ajax
$.ajax({
url: 'url for loading the data',
data: {
'c': c's Id
},
success: function (data) {
$("#D").html(data);
}
});
html:
<option value="">---------</option>
{% for d in D %}
<option value="{{ d.pk }}">{{ d.name }}</option>
{% endfor %}
views.py:
def load_d(request):
c_id = request.GET.get('c')
D = State.objects.filter(c_id=c_id).order_by('name')
return render(request, 'd_list.html', {'D': D})
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Ajay |