【发布时间】:2021-08-08 08:47:59
【问题描述】:
我有两个模型类
class Dishes(models.Model):
dishName=models.CharField()
class Hotels(models.Model):
hotelname=models.CharField()
dishes = models.ManyToManyField('Dishes')
在views.py中
def check_dishes(request):
HotelId = request.GET.get('Id', None)
hotelObj = Hotels.objects.get(pk=HotelId )
dishesObj= hotelObj.dishes.all()
data = {
'HotelName': hotelObj.hotelname
}
Dlist=[]
for dish in dishesObj:
Dlist.append(dish.dishName)
data.update([
('dishes_list', Dlist),
])
print(data)
*** output as below
{'HotelName': 'DeMart', 'dishes_list': ['pizza','burger']}***
return JsonResponse(data,safe=False)
在hotels.html 中我们有一个类似的ajax 调用
$("#getHotelDishes").keyup(function () {
$.ajax({
url: "{% url 'check_dishes' %}",
dataType: 'json',
data: {
"hotelId": Id
},
// on success
success: function (data) {
{% for dishes in data.dishes_list%}
//print dish Names of this Hotel
{% endfor %}
},
// on error
error: function (response) {
console.log(response.responseJSON.errors)
}
})
});
这是通过 Ajax 调用传递 Queryset 数据的正确方法吗,我无法在 for 循环中得到任何结果
【问题讨论】:
-
你调试过ajax
success函数中data.dishes_list的值是什么吗? -
这里
.GET.get('Id', None)..Id应该是hotelId,即:request.GET.get('hotelId', None)
标签: django ajax django-templates many-to-many