Django详细视图中包含主键列表

时间:2018-01-07 22:24:34

标签: python django

在我的程序中,索引页面显示表格中的产品列表,每行包含一个复选框,以及价格级别的下拉列表(例如:零售,分销商) 当用户通过选中复选框选择价格水平和多个产品时,他们会点击流程,程序会根据所选项目和所选价格水平运行查询

因此,它有2个视图:索引视图,列出所有内容和详细视图,列出所选的任何内容。索引视图是具有POST按钮的视图,是我捕获所选价格级别和所选项目的位置。这些参数将使用返回重定向传递给详细信息视图。

我遇到的问题是URLConfig url.py

在详细视图中,传递了2个参数:选定的价格级别和所选项目。根据所选的价格水平,我没有捕获它的问题,因为它是单一价值:零售或分销商。选定的项目是问题:我不知道如何在URL配置中传递一系列选定的项目。

路径应该是这样的 / detail / Retail / {product A,product B,product C}

这是我到目前为止所得到的

path('detail /',views.detail,name ='detail')

这是错误消息

使用关键字参数“{'kwargs':{'pricelevel_id':'1','selected_items':['2','7','5']}}'找不到”详细信息“。尝试了1种模式:['pricequotation \ / detail \ /(?P [0-9] +)$']

这是我的索引视图:

def index(request):
item = Item.objects.all().order_by('category','description','unitofmeasure')
pricelevels = get_list_or_404(PriceLevel)

if request.method == 'POST':
    selected_pricelevel = request.POST['selected_pricelevel']
    print (selected_pricelevel)
    return redirect('pricequotation:detail', pricelevel_id = selected_pricelevel)
else:
    return render(request,"index.html",context={'item':item,'pricelevels':pricelevels})

以下是我的详细信息视图:

def detail(request,pricelevel_id):
selected_pricelevel = get_object_or_404(PriceLevel,pk=pricelevel_id)

pricelevelperitem = PriceLevelPerItem.objects.filter(pricelevel__name__contains=selected_pricelevel).order_by('item__description','item__name')
return render(request,"detail.html",context={'pricelevelperitem':pricelevelperitem,'selected_pricelevel':selected_pricelevel})

1 个答案:

答案 0 :(得分:1)

在您的JavaScript客户端中,您将拥有以下内容:

     var arr = {
         "pricelevel_id": "1", 
         "selected_items": ["2", "7", "5"]}

     $.ajax({
        type: "POST",
        url: "https://yourdomain.com/detail/Retail/",
        crossDomain: true,
        data: JSON.stringify(arr),
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        success: function(data) {
           console.log('success with '+data);
        },
        error: function(data){
           console.log("failure with "+data);
       }
     });

然后你的Django视图:

def detail(request):
    pricelevel_id =  request.data['pricelevel_id']
    selected_items = request.data['selected_items']
    # Any processing logic you may have goes here