Cela semble devrait être évident, mais la solution me échappe. Normalement j'écrirais juste une fonction de vue simple qui remplirait une forme appropriée et la passerais à la vue, mais la solution se sentirait si proche.Passez un formulaire créé avec les paramètres d'URL capturés à une vue django générique?
J'ai un formulaire. Je veux instancier ce formulaire en utilisant un object_id
que j'ai capturé dans l'URL, puis l'envoyer à mon modèle en utilisant le paramètre extra_context
.
J'ai quelque chose comme ceci:
class AddProductForm(forms.Form):
product = forms.IntegerField()
quantity = forms.IntegerField()
et ceci:
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'),
Est-il possible de remplacer <what?>
ci-dessus avec la valeur capturée de object_id
? (Peut-être un callable intelligent passé en extra_context
pourrait faire le formulaire pour moi?)
+1 Merci, cela est essentiellement ce que je faisais (finalement j'avais ajouter des champs supplémentaires à mon formulaire, donc quelque chose comme ça était nécessaire de toute façon). Je me suis demandé ce que les gens utilisent les callables dans extra_context. – Seth
Reportez-vous à la documentation des vues génériques pour l'ajout de contextes supplémentaires. Il s'agit essentiellement de jeux de requêtes supplémentaires que vous pouvez utiliser dans vos modèles. – Wogan