我有Django模型描述在特定的一天的地方,並訪問到那些地方:與ForeignKey的DATE_FIELD基於最新的Django ArchiveView
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)
我要顯示所有的地方參觀了一年的時間,所以我使用YearArchiveView
與date_field
跨越與訪問次數的關係的嘗試:
from django.views.generic import YearArchiveView
from myapp.models import Place
class PlaceYearArchiveView(YearArchiveView):
date_field = 'visit__visit_date'
model = Place
然而,這讓我「將沒有名爲‘visit__visit_date’場」。
什麼是最簡單的方法有這種看法使用的queryset這是這樣的(假設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__year = 2016).distinct()' – Udi