3

一般的なビューを使用して、Web サイトのインデックス ページで、ニュース クリッピング データベースの最新の 100 項目をプレビューすることができました。

DPRM

ここで、Web サイトの別の論理セクションでデータベースをページ分割する必要があります。年ごとにページ番号を付ける必要があります。毎年のエントリ数は気にしません。URL から年を取得し、その年のデータベース アイテム (つまり、/newsitems/validyearhere) を取得し、ユーザーにナビゲートする方法を提示したいだけです。何年もの間。Rails でこれを行う方法はありますが、Django では方法が見つかりませんでした。

現在展開されているモデルを使用できますか?

from django.db import models

class Article(models.Model):
    headline = models.CharField(max_length=100)
    subhead = models.CharField(max_length=50)
    publication = models.CharField(max_length=30)
    author = models.CharField(max_length=50)
    date = models.DateField()
    website = models.URLField()

    def __unicode__(self):
        return self.headline

現在の日付フィールドに加えて、余分な年データベース フィールドを追加する必要がありますか? これに対応するために、スキーマを何らかの形で進化させる必要がありますか?

また、ユーザーがエントリのない年または年ではないデータを入力した場合、正常に失敗する必要があります。

私は Django に非常に慣れておらず、学習曲線が急であることに気付いているので、これをできるだけ簡単に説明してください。

4

2 に答える 2

7

新しいクラス ベースのビューでは、 YearArchiveViewを使用するのが簡単です。

class ArticleYearArchiveView(YearArchiveView):
    model = Article
    paginate_by = 100
    context_object_name = 'article_list'
    date_field = 'date'
    allow_empty = True

空の許可は、その年の要素がない場合でもページを表示することです

あなたのurls.pyようなものが必要になります

url(r'^newsitems/(?P<year>\d+)/$', ArticleYearArchiveView.as_view()),
于 2011-12-24T12:50:30.207 に答える
1

はい、あなたのモデルは問題ありません..クラスベースのビューを作成してみませんか?

class SomeListView(ListView):
    model = Article
    paginate_by = 100
    template_name = "app/template.html"
    context_object_name = "articles" # or use object_list

    def get_queryset(self):
        return Article.objects.order_by('-date')

get_queryset に別のフィルターを追加して、年ごとの結果のリストを作成できます。テンプレートでは、それらを繰り返し処理してカスタム ボタン (年情報付き) を作成できます。

于 2011-12-24T12:35:54.780 に答える