django - 如何使用 django 基于日期的通用 View

标签 django django-views django-generic-views

我一直在尝试 django 基于日期的通用 View 但没有成功。文档没有给出示例,所以我还没有很好地理解它们。这个tutorial这里展示了如何对具有 slug 字段 的模型使用通用 View 。

文档说

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

它说没有找到。请帮忙

最佳答案

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

也就是说,您根本不应该使用旧的基于函数的 View - 它们已被基于类的 View 所取代,这就是为什么它们只能通过“基于函数的链接”访问通用 View (已弃用)”。请参阅the documentation关于新风格。

关于django - 如何使用 django 基于日期的通用 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8643770/

相关文章:

python - 在 View Django Python 中显示模型的图像

python - 如何在 Django 中获取登录用户的用户名?

python - Django-haystack 通用 SearchView - 无结果

python - 无法理解 Django 和 mixin 行为

python - Django:在模型保存中获取当前用户

python - 我收到错误消息 : TypeError: unsupported operand type(s) for %: 'DeferredAttribute' and 'dict' in django

mysql - Django 数据库模型 - 消息和收件人 : many-to-many or many-to-one?

django - 如何将值过滤器与我的 Django 模型上某个外键字段的查询集结合起来

python - Django 服务器 100% cpu 无明显原因

python - 无法将 slug 传递给 UpdateView 以获取正确的数据