2014-11-25 2 views
0

Я пытаюсь получить последние 5 элементов. Я действительно не знаю, как это сделать. Я попробовал функцию reverse(). чтобы ограничить запрос, который я использовал [: 5]обратная информация о базе данных django

вопрос: для чего нужен контекст запроса? я не понимаю 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}) 

ответ

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}

UPDATE: В вашем случае вы можете использовать RequestContext так:

возвращения визуализацию (запрос "чат/чат. HTML», { 'форма': форма, 'р': р})

......

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

при использовании [-5:] Я получаю эту ошибку: отрицательная индексация не поддерживается. Задать запросКонтекст, когда и где его использовать? Мне нужно использовать его здесь? – nokker

+0

@nokker Попробуйте эту тему.objects.all(). Order_by ('createdat') [: 5] – wolendranh

+0

Это сработало, но я должен был сделать это «-createdat». Большое спасибо! – nokker