J'utilise le CreateView générique comme:
#urls.py
from Django.conf.urls.defaults import *
from Django.views.generic import CreateView
from content.models import myModel
urlpatterns = patterns('myApp.views',
(r'myCreate/$', CreateView.as_view(model=myModel)),
)
Avec un template mymodel_form.html comme:
<form method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
Lorsque je soumets mon formulaire, le nouvel objet est créé mais le message d'erreur s'affiche.
ImproverlyConfigured at ...
Aucune URL vers rediriger vers. Soit fournir une URL ou définissez une méthode get_absolute_url sur le modèle.
Comment puis-je spécifier l'URL à rediriger en cas de succès?
Avez-vous essayé de transmettre success_url
? par exemple.
CreateView.as_view(model=myModel, success_url="/success/")
ou si vous souhaitez rediriger vers une vue nommée:
CreateView.as_view(model=myModel, success_url=reverse('success-url'))
vous pouvez également essayer de définir get_absolute_url dans vos modèles. Par exemple
class Something(models.Model):
name = models.CharField(max_length=50, verbose_name='name')
class Meta:
pass
def get_absolute_url(self):
return u'/some_url/%d' % self.id
Ajouter dans les vues:
def form_valid(self, form):
return self.render_to_response(self.get_context_data(form=form))