【问题标题】:Can I filter on request.user when using Django generic views?使用 Django 通用视图时,我可以过滤 request.user 吗?
【发布时间】:2010-12-05 02:41:03
【问题描述】:

我想做这样的事情(来自我的urls.py),但我不知道是否可以让用户提出请求:

    url(r'^jobs/(page(?P<page>[0-9]+)/)?$',
        object_list, {'queryset': Job.objects.filter(user=request.user), 
                      'template_name': 'shootmpi/molecule_list.html'},
        name='user_jobs'),

【问题讨论】:

    标签: django filter view generics


    【解决方案1】:

    您可以编写一个包装函数,使用所需的查询集调用 object_list。

    在 urls.py 中:

    url(r'^(page(?P<page>[0-9]+)/)?$', 'views.user_jobs', name='user_jobs')
    

    在views.py中:

    from django.views.generic.list_detail import object_list
    
    def user_jobs(request, page):
        job_list=Job.objects.filter(user=request.user)
        return object_list(request, queryset=job_list,
            template_name='shootmpi/molecule_list.html',
            page=page)
    

    有一个good blog post by James Bennett 使用这种技术。

    【讨论】:

    • 我试图绕过创建自己的视图,但仅包装 object_list 听起来是一个合理的想法
    • 很好的答案——当您将通用视图从 urls.py 中取出并在您自己的视图函数中使用它们时,您可以使用它们做更多事情
    • 好链接!我一直认为通用视图只是你在 urls.py 中使用的东西。
    猜你喜欢
    • 2011-10-04
    • 2017-07-26
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 2017-12-24
    • 2014-10-25
    相关资源
    最近更新 更多