2016-08-22 9 views
1

私はブログのウェブサイトを構築していて、それぞれ次の投稿と前の投稿のためにnextprevボタンを入れようとしています。djangoでget_next_by_FOO()を使用するにはどうすればよいですか?

公式文書では、get_next_by_FOO(**kwargs)where FOO is the name of the field. This returns the next and previous object with respect to the date fieldを説明しています。

私のmodels.pyとviews.pyは以下のとおりです。

models.py

class Post(models.Model): 
    title = models.CharField(max_length=100) 
    content = models.TextField() 
    updated = models.DateTimeField(auto_now=True, auto_now_add=False) 
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True) 
    class Meta: 
     ordering = ["-timestamp", "-updated"] 

views.py

def post_detail(request, id=None): 
    instance = get_object_or_404(Post, id=id) 
    the_next = instance.get_next_by_title() 
    context ={ 
     "title": instance.title, 
     "instance": instance, 
     "the_next" : the_next, 
    } 
    return render(request, "post_detail.html", context) 

私はその概念を誤解しています?そうすれば、どうすれば対処できますか? ありがとうございます!

答えて

3

get_next_by_FOOは、「日付(または日時)フィールドで注文された次のレコードを取得してください」というように考えてください。FOO "

したがってFOOは、日付または日時フィールドの名前です。

あなたのモデルでは、「タイムスタンプに基づいて次のレコードを取得してください」と言うことができます。これはget_next_by_timestamp()または「更新日に基づいて次のレコードを取得してください」ということになり、get_next_by_updated()となります。

+0

私はそれらが同じクラスにあるので、私は自動的にdatetimeフィールドに接続すると思ったので、私は任意のフィールドを割り当てることができると思った。私は 'views.py'を修正し、テンプレートを' Next 'のように編集しました。それから私はこれをクリックしましたが、404ページが見つかりませんでした。私はURLを設定しなければならないと思いますか?ありがとうございました! – jaykodeveloper

+0

もちろん、URLを介してビューにマップする必要があります。 –

+0

もっとエキサイティングになっています!助けてくれてありがとう! – jaykodeveloper

関連する問題