Добрый день, подскажите как при выборе категории, получить следующие подкатегории, с ajax ранее не работал, да и в django новичок.
При выборе города, необходимо, чтобы появлялись филиалы, относящиеся к этому городу.
Models - StudentClassclass StudentClass(models.Model):
"""Группы"""
city = models.ForeignKey(City, on_delete=models.CASCADE, blank=True, null=False, verbose_name="Город")
branch = models.ForeignKey(Branch, on_delete=models.CASCADE, blank=True, null=False, verbose_name="Филиал")
teatcher = models.ForeignKey('staffs.Staff', on_delete=models.CASCADE, blank=True, null=False, verbose_name="Преподаватель")
name = models.CharField("Название", max_length=200, unique=True)
class Meta:
verbose_name = "Class"
verbose_name_plural = "Classes"
ordering = ["name"]
def __str__(self):
return self.name
models City
class City(models.Model):
"""Города"""
name = models.CharField("Название", max_length=200, unique=True)
supervisor = models.ForeignKey(
'staffs.Staff', related_name="staffcity", on_delete=models.CASCADE, blank=True, null=True, verbose_name='Руководитель'
)
class Meta:
ordering = ["name", "supervisor"]
verbose_name = 'city'
verbose_name_plural = 'cities'
def __str__(self):
return self.name
models Branch
class Branch(models.Model):
"""Филиалы"""
city = models.ForeignKey(City, on_delete=models.CASCADE, blank=True, null=False, verbose_name="Город")
address = models.CharField("Адрес", max_length=250, unique=False)
title = models.CharField("Название", max_length=100, unique=False)
class Meta:
ordering = ["city", "title"]
verbose_name = 'branch'
verbose_name_plural = 'branches'
def __str__(self):
return self.title
В views добавил функцию получения филиала
views get_branch
def get_branch(request):
id = request.GET.get('id', '')
result = list(Branch.objects.filter(
city_id=int(id)).values('id', 'title'))
return HttpResponse(json.dumps(result), content_type="application/json")
В urls
urls
url(r'^/get_branch/$', get_branch),
По подсказкам взял и видоизменил запрос
ajax запрос
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$(document).on("change", "select#id_Class-city", function () {
$.getJSON("/get_branch/", { id: $(this).val() }, function (j) {
let options = '<option value="">---------</option>';
for (let i = 0; i < j.length; i++) {
options += '<option value="' + j[i].id + '">' + j[i].name + "</option>";
}
$("select#id_Class-branch").html(options);
});
});
});
</script>
Данный запрос поместил в форму html, отвечающую за добавление данных в "Группы"
Но ничего не изменилось, что я сделал не так?