【发布时间】:2015-11-13 08:14:30
【问题描述】:
错误是不言自明的。但我对如何解决它感到困惑。
如果表单条目在数据库中获得了相应的记录,则没有错误。但是如果我在表格中输入了一些在数据库中没有相应数据的内容,那么就会出现“NoneType”对象没有“聚合”属性的错误。我知道原因是因为没有查询结果,所以在def上下文中它不能继续计算。
那么如果无论如何都没有在数据库中找到对应的记录,那么它不会继续在“def get_context_data”中进行计算以避免这个错误?因此该页面将仅保留在当前数据输入页面上,而不会重定向到另一个页面以显示结果。
感谢任何建议,在此先感谢。
views.py
from django.contrib import messages
class FinalView(ListView):
context_object_name = 'XXX'
template_name = 'XXX.html'
model = Final
def get_queryset(self):
form = InputForm(self.request.GET)
if form.is_valid():
department = form.cleaned_data['department']
person = form.cleaned_data['person']
if department !="" and person !="":
if Final.objects.filter(department=department,person=person).exists():
queryset=Final.objects.filter(department=department,person=person)
return queryset
else:
form.add_error(ValidationError('No corresponding data exists'))
elif department =="" and person !="":
if Final.objects.filter(person=person).exists():
queryset=Final.objects.filter(person=person)
return queryset
else:
form.add_error(ValidationError('No corresponding data exists'))
elif ........
else: #if form not valid
messages.error(request, "Error")
def get_context_data(self,**kwargs):
context["sales"] = self.get_queryset().aggregate(Sum('sales'))
按照建议编辑
.........Before are the same....
def get_context_data(self,**kwargs):
query_set = self.get_queryset()
if query_set is not None:
context = super(FinalView, self).get_context_data(**kwargs)
context["sales"] = query_set.aggregate(Sum('sales'))
return context
【问题讨论】: