4

これは明らかなはずですが、解決策は私にはわかりません。通常、私は適切なフォームに入力してビューに渡す単純なビュー関数を書くだけですが、解決策は非常に近いと感じます..

フォームがあります。object_idURL でキャプチャした を使用してこのフォームをインスタンス化し、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?>上記を のキャプチャされた値に置き換える方法はありobject_idますか? (もしかしたら、渡された巧妙な callable がextra_contextフォームを作成してくれるのではないでしょうか?)

4

1 に答える 1

6

残念ながら、urlconf でそれを行うことはできません。提供する callable は引数を受け入れることができないため、 の値を取得することはできません?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')
于 2009-12-17T01:04:15.967 に答える