如何使用基于django日期的通用视图

时间:2011-12-27 10:45:48

标签: django django-views django-generic-views

我一直在尝试django date based generic views,但没有成功。文档没有给出一个例子,所以我没有理解它们。此处tutorial显示了如何对具有slug field

的模型使用通用视图

文档说

Either object_id or (slug and slug_field) is required.

但我还不明白实际上是怎么做到的。我的models.py包含

class CompanyActivity(models.Model):
    company = models.CharField(max_length=300)
    desc = models.TextField()
    text = models.TextField()
    date = models.DateTimeField()
    activity_type = models.CharField(max_length=600)

和我的urls.py包含

info_dict = {
    'queryset': CompanyActivity.objects.all(),
    'date_field': 'date',
}

    urlpatterns+= patterns('django.views.generic.date_based',
        url(r'^activity/(?P<year>d{4})/(?P<object_id>\d+)/$','object_detail', dict(info_dict,object_id='id',template_name='activity/detail.html')),
    )

我知道urls.py我不知道如何传递object_id有什么问题,我打算做的是我要显示特定年份的活动页面。同年,同一家公司可以有多个活动页面。

当我查找此页面时

http://127.0.0.1:8000/activity/2011/1

它说未找到。请帮忙

1 个答案:

答案 0 :(得分:3)

出于某种原因,您似乎在查看object_detail的信息。顾名思义,这是针对特定对象的 detail (基于日期),因此与您的问题无关,即如何获取特定年份的活动列表。同样不足为奇的是,您正在寻找的功能是archive_year

urlpatterns+= patterns('django.views.generic.date_based',
    url(r'^activity/(?P<year>d{4})/$','archive_year',
        dict(info_dict, template_name='activity/detail.html')),
)

那就是说,你根本不应该使用旧的基于函数的视图 - 它们已经被基于类的视图所取代,这就是为什么它们只能通过“基于函数”的链接访问通用视图(已弃用)“。有关新款式的信息,请参阅the documentation