Django 必须使用对象pk或slug调用通用详细信息viewResult
我将此错误显示为标题。根据文档,我添加了“slug_url_kwarg='result'”(result是应用程序名)。它不工作,然后我添加了“def get_object(self):”,它返回的错误为“id是一个KeyError”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
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'),