2

我一直在尝试 django date based generic views,但没有成功。文档没有给出示例,所以我没有很好地理解它们。此处的本教程展示了如何将通用视图用于具有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

它说没有找到。请帮忙

4

1 回答 1

3

出于某种原因,您似乎正在查看object_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')),
)

也就是说,您根本不应该真正使用旧的基于函数的视图——它们已被基于类的视图所取代,这就是为什么它们只能通过“基于函数的通用视图”的链接访问的原因(已弃用)”。请参阅有关新样式的文档。

于 2011-12-27T11:22:12.330 回答