代码之家  ›  专栏  ›  技术社区  ›  Seth

是否将使用捕获的url参数创建的表单传递给通用django视图?

  •  4
  • Seth  · 技术社区  · 15 年前

    好像是这样 应该

    我有一张表格。我想使用 object_id 我在url中捕获的,然后使用 extra_context 参数

    我有这样的想法:

    class AddProductForm(forms.Form): 
        product = forms.IntegerField()
        quantity = forms.IntegerField()
    

    这是:

    url(r'^products/(?P<object_id>\d+)/$', 
        'django.views.generic.list_detail.object_detail',
        {'queryset': Product.objects.all(),
        'extra_context': {'form': AddProductForm({'product': <what?>, 'quantity': 1})},
        name='product_detail'),
    

    有什么方法可以取代它吗 <what?> 上面是捕获的 ? (也许有一个聪明的人进来了 额外上下文 你能帮我做一下表格吗?)

    1 回复  |  直到 15 年前
        1
  •  6
  •   Wogan    15 年前

    恐怕你不能在你的办公室里做那件事。您提供的任何可调用项都不能接受任何参数,因此您将无法获取的值 ?P<object_id>

    但是,您可以在自己的视图中重复使用通用视图,以减少必须编写的样板文件的数量:

    from django.views.generic.list_detail import object_details
    from your.forms import AddProductForm
    from your.models import Product
    
    def about_pages(request, object_id=None):
        qs = Product.objects.all()
        f = AddProductForm({'product':object_id,'quantity':1})
        return object_details(request,queryset=qs,extra_context={'form':f},template='yourtemplate.html')
    
    推荐文章