我的視圖中有一個django查詢集,其值在傳遞到我的模板之前打包。查詢集返回none
時出現問題,因爲關聯值未解包。 quersyet被稱爲comments
。匹配django queryset中可選字段的空白條目以及相應的字段在必填字段中
這裏是我的views.py
def forums(request):
post_list = list(forum.objects.filter(child='0')&forum.objects.filter(deleted='0').order_by('postDate'))
user = UserProfile.objects.get(pk=request.session['_auth_user_id'])
newpostform = PostForm(request.POST)
deletepostform = PostDeleteForm(request.POST)
DelPostFormSet = modelformset_factory(forum, exclude=('child','postSubject','postBody','postPoster','postDate','childParentId'))
readform = ReadForumForm(request.POST)
comments =list(forum.objects.filter(deleted='0').filter(child='1').order_by('childParentId').values('childParentId').annotate(y=Count('childParentId')))
if request.user.is_staff== True :
staff = 1
else:
staff = 0
staffis = 1
if newpostform.is_valid():
topic = request.POST['postSubject']
poster = request.POST['postPoster']
newpostform.save()
return HttpResponseRedirect('/forums')
else:
newpostform = PostForm(initial = {'postPoster':user.id})
if request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
post_list = list((forum.objects.filter(child='0')&forum.objects.filter(deleted='0')&forum.objects.filter(Q(postSubject__icontains=query)|Q(postBody__icontains=query)|Q(postDate__icontains=query)))or(forum.objects.filter(deleted='0')&forum.objects.filter(Q(postSubject__icontains=query)|Q(postBody__icontains=query)|Q(postDate__icontains=query)).values('childParentId')))
if request.method == 'POST':
delpostformset = DelPostFormSet(request.POST)
if delpostformset.is_valid():
delpostformset.save()
return HttpResponseRedirect('/forums')
else:
delpostformset = DelPostFormSet(queryset=forum.objects.filter(child='0', deleted='0'))
"""if readform.is_valid():
user=get_object_or_404(UserProfile.objects.all())
readform.save()
else:
readform = ReadForumForm()"""
post= zip(post_list,comments, delpostformset.forms)
paginator = Paginator(post, 10) # Show 10 contacts per page
# Make sure page request is an int. If not, deliver first page.
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
# If page request (9999) is out of range, deliver last page of results.
try:
post = paginator.page(page)
except (EmptyPage, InvalidPage):
post = paginator.page(paginator.num_pages)
return render_to_response('forum.html', {'post':post, 'newpostform': newpostform,'delpost':delpostformset, 'username':user.username, 'comments':comments, 'user':user, },context_instance = RequestContext(request))
我意識到,這個問題是與comments
查詢集comments =list(forum.objects.filter(deleted='0').filter(child='1').order_by('childParentId').values('childParentId').annotate(y=Count('childParentId')))
這將只對有意見的帖子返回值。所以我現在需要一種方式來返回0評論當post-list
post_list = list(forum.objects.filter(child='0')&forum.objects.filter(deleted='0').order_by('postDate'))
中的值沒有任何評論(可選字段)。
這裏是我的models.py
class forum(models.Model):
postID = models.AutoField(primary_key=True)
postSubject = models.CharField(max_length=100)
postBody = models.TextField()
postPoster = models.ForeignKey(UserProfile)
postDate = models.DateTimeField(auto_now_add=True)
child = models.BooleanField()
childParentId = models.ForeignKey('self',blank=True, null=True)
deleted = models.BooleanField()
def __unicode__(self):
return u' %d' % (self.postID)
這仍然不適用於'post_list = list(forum.objects.filter(child ='0')&forum.objects.filter(deleted ='0')。order_by('postDate'))' – 2010-04-09 07:49:03