Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 必须使用对象pk或slug调用通用详细信息viewResult_Django - Fatal编程技术网

Django 必须使用对象pk或slug调用通用详细信息viewResult

Django 必须使用对象pk或slug调用通用详细信息viewResult,django,Django,我将此错误显示为标题。根据文档,我添加了“slug_url_kwarg='result'”(result是应用程序名)。它不工作,然后我添加了“def get_object(self):”,它返回的错误为“id是一个KeyError” 它自己创建的数据库是一个主ket:“id”,所以我使用这个“id”作为slug_字段。这是正确的吗 你认为我是否有必要使用UpdateView?我希望html在提交表单后显示结果(使用ajax) 谢谢你的回复 url url(r'^result_list/$',R

我将此错误显示为标题。根据文档,我添加了“slug_url_kwarg='result'”(result是应用程序名)。它不工作,然后我添加了“def get_object(self):”,它返回的错误为“id是一个KeyError”

  • 它自己创建的数据库是一个主ket:“id”,所以我使用这个“id”作为slug_字段。这是正确的吗

  • 你认为我是否有必要使用UpdateView?我希望html在提交表单后显示结果(使用ajax)

  • 谢谢你的回复

    url

    url(r'^result_list/$',ResultView.as_view(),name='result'),
    
    视图.py

    class ResultView(UpdateView):
        context_object_name = 'result_list'
        template_name = 'result_list.html'
        form_class = InputForm
        slug_field = 'result.id' ---here means the pk,right?
        slug_url_kwarg = 'result'
    
    
    
        def get_queryset(self):
            return Result.objects.all()
    
        def post(self, request, *args, **kwargs):
            form = InputForm(request.POST)
            if form.is_valid():
                if self.request.is_ajax():
                    company = form.cleaned_data['company']
                    region = form.cleaned_data['region']
    
                    queryset=Result.objects.filter(region=region)
                    return HttpResponse(simplejson.dumps(to_json),mimetype='application/json')
            else:
                 return HttpResponse(form.errors)
    
        def get_context_data(self, **kwargs):
            context = super(ResultView, self).get_context_data(**kwargs)
            context["sales"] = self.get_queryset().aggregate(Sum('sales'))
    
        def get_object(self):
            object = get_object_or_404(Result,id=self.kwargs['id'])  <!here is not correct--->
            return object
    

    您忘记映射url模式,在本例中不需要指定slug_字段和slug_url_kwarg:

    url(r'^dupont_list/(?P<pk>[0-9]+)/$', DupontView.as_view(), name='dupont'),
    
    url(r'^dupont_list/(?P[0-9]+)/$),DupontView.as_view(),name='dupont'),
    
    您没有在URL中传递任何id。您希望这个视图如何计算出您所指的对象?您好@iago1460,有一件事我不明白:我要显示的最终结果是一个“聚合”计算结果,它不是某个“id”行的值。但是删除get_对象(self)后,它会将错误显示为title,那么我可以实现所需的函数吗?Aggregate生成一个字典“{'sales_sum':99.99}”,因此访问该值的方式如下:context['sales]=self.get_queryset().Aggregate(sum('sales'))['sales_sum']
    url(r'^dupont_list/(?P<pk>[0-9]+)/$', DupontView.as_view(), name='dupont'),