我的模特:
class Topping(models.Model):
name=models.CharField(max_length=24)
class Pizza(models.Model):
toppings=models.ManyToManyField(Topping)
我的观点:
def get_pizza(request):
if request.is_ajax():
pizza_list=[]
pizza_list=Pizza.objects.all()
pizza_list_json = serializers.serialize('json', pizza_list)
return JsonResponse({'result': 'OK', 'data': {
'pizza_list': pizza_list_json,
}})
我的Javascript:
function get_pizza() {
$.ajax({type: 'POST',
url: '/path/get_pizza/',
data: {
},
success: function (lista) {
if (lista.result === 'OK') {
var pizza_list_json=lista.data.pizza_list;
pizza_list = JSON.parse(pizza_list_json);
make_pizza(pizza_list);
};
}
});
};
function make_pizza() {
for (i=i; i<pizza_list.length; i++) {
var myfield=toppings;
var list_elem=pizza_list[i].fields[myfield];
};
};
问题是list_elem=[1, 4]
包含对象的id,而我需要名称list_elem=[tomato, peperoni]
。使用外键我可以使用模型中的to_field=name
选项,但使用ManyToManyField
我不能。
我尝试了myfield__name
但不起作用(它给出了myfield__name is not defined
错误)。
那么,我该怎么办?我必须在视图中以不同的方式定义pizza_list
?哪种方法可以解决这个问题?
谢谢
答案 0 :(得分:0)
{"name": "Jalapeno"}
作为参数,并以JSON格式返回名称,例如: name
。displayElemName(elem_id)
变量。 Session["username"] = user;
。以上是您可以用来解决问题的一般想法。但是,这将查询数据库的次数与列表中的项目一样多。如果你对此没问题,那么这将很好。