【发布时间】:2014-12-10 08:51:46
【问题描述】:
我正在尝试从我的数据库中获取满足指定条件的所有对象。从我的模型Training 我需要获取与登录用户相关的所有对象,日期在指定范围内,并且指定了培训类型。
型号:
class Training(models.Model):
user = models.ForeignKey(User)
date = models.DateField()
length = models.TimeField()
distance = models.FloatField()
type = models.CharField(max_length=2,choices=TRAINING_TYPE)
caloriesBurnt = models.FloatField()
weight = models.FloatField()
description = models.TextField(max_length=25)
使用过滤器查看:
def ReportRequest(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/login/')
if request.method == 'POST':
form = ReportForm(request.POST)
if form.is_valid():
usrname = request.user
q = Training.objects.filter(user=usrname)
q = Training.objects.filter(date__range=[form.cleaned_data['start'], form.cleaned_data['end']])
q = Training.objects.filter(type=form.cleaned_data['type'])
quantity = q.count
if quantity == 0:
return HttpResponseRedirect('/notrainings/')
avg_length = q.aggregate(Avg('length'))
avg_distance = q.aggregate(Avg('distance'))
avg_calories = q.aggregate(Avg('caloriesBurnt'))
return HttpResponseRedirect('/report/')
else:
return render_to_response('reportform.html', {'form':form}, context_instance=RequestContext(request))
else:
form = ReportForm()
return render_to_response('reportform.html',{'form':form}, context_instance = RequestContext(request))
以及用户设置数据范围和训练类型的形式:
class ReportForm(forms.Form):
start = forms.DateField(widget=SelectDateWidget(), initial=date.today())
end = forms.DateField(widget=SelectDateWidget(),initial=date.today())
type = forms.ChoiceField(required=True, choices=ACTIVITY_CHOICES, initial=RUNNING)
我的问题:在我的数据库中,所有培训都是在 12 月 9 日和 10 日进行的。当我在表格中设置从 12 月 2 日到 3 日的日期范围时,它应该将我重定向到 /notrainings/。但事实并非如此。无论我使用quantity = q.count 还是quantity = q.count()。
我将非常感谢有关此主题的帮助。
已解决,感谢 Mihai 和 ruddra
【问题讨论】:
标签: django database forms views