私は次のモデルがあります:Django |月ごとにグループ化されたイベントをカスタム形式で表示しますか?
私はその後、4月現在表示し、タブ、来月、次の後の月と表示されるはず「その後」と呼ばれる最後のタブを持っている私のEventsIndex
テンプレートで
class Event(Page)
# my fields
start_date = models.DateField()
end_date = models.DateField()
class EventsIndex(Page):
# my fields
def get_events(self):
events = Event.objects.all().sort_by("start_date")
return events
月ごとにグループ化された個々のEvent
S:
私は、これらのイベントを表示するために取得するためのロジックを把握しようとしています。個々の月のタブにはイベントのみが表示され、「後で」タブにはイベントの月の見出しが表示され、次にイベント自体が表示されます。当初、私は、各タブの機能を作成する方法について考えたので、何かのように:
def current_month_events(self):
current_month, current_year = datetime.now().month, datetime.now().year
events = Event.objects.filter(start_date__year=current_year,
start_date__month=current_month).order_by("start_date")
return events
# Repeat for all required tabs
しかし、これはDRY原則に反するように思われます。このロジックを処理するためのもっとpythonicな方法はありますか?
ありがとう@Withnail!私は、時間デルタの代わりにrelativedeltaを使用するなど、いくつかの変更を加えなければならなかったが、すべてが完璧に機能する:) – DDiran