我有一个看起来像这样的自定义模型管理器:
class MyManager(models.Manager)
def get_query_set(self):
'''Only get items that are 'approved' and have a `pub_date` that is in
the past. Ignore the rest.'''
queryset = super(MyManager, self).get_query_set()
queryset = queryset.filter(status__in=('a',))
return queryset.filter(pub_date__lte=datetime.utcnow())
这很好用;但是,我在使用 Django 的generic.list_detail
视图时遇到了问题object_detail
,并且object_list
:查询集似乎只加载了一次,因此,它没有获取应有的项目,因为我认为utcnow()
时间只被调用了一次(当它首次加载)。
我认为这是故意的,并且是为了提高性能 - 但是,这意味着视频会先显示在网站的其他地方(在我不在视图中的地方object_detail
),然后才能在object_detail
视图中使用(请参阅下面的 urls.py)。这导致 404...
有任何想法吗 ?还是我必须编写自己的自定义视图来避免这种情况?
谢谢!
网址.py
url(r'^video/(?P<object_id>\d+)$',
list_detail.object_detail,
{ 'queryset': Video.objects.all(), },
name='video_detail',
),