Javascript 按id访问django ManyToManyField的Ajax

Javascript 按id访问django ManyToManyField的Ajax,javascript,ajax,django,many-to-many,Javascript,Ajax,Django,Many To Many,我的模型: 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=Piz

我的模型:

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];
    };
};
函数get_pizza(){ $.ajax({type:'POST', url:“/path/get_pizza/”, 数据:{ }, 成功:功能(lista){ 如果(lista.result===“确定”){ var pizza_list_json=lista.data.pizza_list; pizza\u list=JSON.parse(pizza\u list\u JSON); 制作比萨饼(比萨饼清单); }; } }); }; 函数make_pizza(){ for(i=i;i
  • 创建一个以
    id
    为参数的新视图,并返回JSON格式的名称,例如
    {“name”:“Jalapeno”}
  • 创建一个函数,将请求发送到连接到您创建的视图的url,并从JSON响应中捕获
    name
    变量
  • 在需要的位置显示值,例如
    displayelmname(elem\u id)

  • 以上是您可以用来解决问题的一般思路。但是,这将查询数据库的次数与列表中的项目数相同。如果您对此没有异议,那么这将很好。

    没有更有效的方法了?因为pizza_列表非常长(数千个元素)这意味着数千个请求我不这么认为。也许你可以通过Python来实现这一点,例如
    get\u display\u name()
    ,但不能通过JavaScript,因为它没有访问关系的权限。