反向数据库信息django

时间:2014-11-25 17:10:30

标签: django database reverse

我想要添加最后5个项目。我真的不知道该怎么做。 我尝试了reverse()函数。限制我使用的查询[:5]

额外的问题:请求上下文是什么?我不懂djangodocs

模型:

class Topic(models.Model):
    user = models.ForeignKey(User)
    postit = models.TextField(max_length=300)
    comment = models.TextField(max_length=300)
    createdat = models.DateTimeField(default=timezone.now)


    def timer(self):
        return self.createdat


    def who(self):
        return self.user

    def __str__(self):              # __unicode__ on Python 2
        return self.postit

查看:

def chat(request):


    if request.method == 'POST':
        form = StoryForm(request.POST)
        if form.is_valid():
            storyi = form.save(commit=False)
            storyi.user = request.user
            storyi.save()
            return HttpResponseRedirect('/chat/')

    else:
        form=StoryForm()

    try:
        p = Topic.objects.all()[:5].reverse()

      )

    except ObjectDoesNotExist:
        p= "don't try it again"

    return render(request,'chat/chat.html',{'form': form, 'p':p})

1 个答案:

答案 0 :(得分:0)

如果上次添加你的意思是列表中的最后一个,那么它应该是[-5:]。 例如:

In [22]: a =[1,2,3,4,5,6,7,8,9,10]
In [23]: a[:5]
Out[23]: [1, 2, 3, 4, 5]
In [26]: a[-5:]
Out[26]: [6, 7, 8, 9, 10]

您对RequestContext的兴趣是什么? RequestContext将返回特定值作为响应。 例如:

def my_view(request):
    # View code here...
    t = loader.get_template('myapp/index.html')
    c = RequestContext(request, {'foo': 'bar'})
    return HttpResponse(t.render(c))

在此处,您返回带有呈现值'index.html'

{'foo':''bar}模板

更新: 在您的情况下,您可以像这样使用RequestContext:

return render(request,'chat / chat.html',{'form':form,'p':p})

...

template = loader.get_template('chat/chat.html')
c=RequestContext(request, {'form': form, 'p':p})
return HttpResponse(template.render(c))