をDATE_FIELD:Djangoの日付ベースArchiveViewが、私は特定の日にこれらの場所に場所や訪問を記述したDjangoのモデル持っ
from django.db import models
class Place(models.Model):
# ...
name = models.CharField(max_length=255)
class Visit(models.Model):
# ...
place = models.ForeignKey('Place', blank=False)
visit_date = models.DateField(blank=False)
を私は年に訪問したすべての場所を表示したいので、私はしました訪問との関係をまたがるdate_field
でYearArchiveView
を使用してみました:
from django.views.generic import YearArchiveView
from myapp.models import Place
class PlaceYearArchiveView(YearArchiveView):
date_field = 'visit__visit_date'
model = Place
しかし、これは「場所 『はvisit__visit_date』という名前のフィールドを持っていない」私を取得します。このビューは(d1
とd2
が問題の年の最初と最後の日と仮定)このようなものだクエリセットを使用していする最も簡単な方法は何
:
Place.objects.filter(visit__visit_date__gte=d1, visit__visit_date__lte=d2).distinct()
私は標準ListView
を使用することができますし、私自身のget_queryset()
メソッドを書きますが、もしこれがより良いと思われるYearArchiveView
に基づいています。
は' placeset__visit__visit_date'仕事をしていますか? – Tom
いいえ、同様の結果です。私は前にフィルターで 'placeset__'スタイルを見ていませんでした。 –
また試してみてください: 'Place.objects.filter(visit__visit_date__ear = 2016).distinct()' – Udi