私は次のような汎用のCreateViewを使用しています:
#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)),
)
次のようなmymodel_form.htmlテンプレートを使用します。
<form method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
フォームを送信すると、新しいオブジェクトが作成されますが、エラーが発生します
不適切な設定...
リダイレクト先のURLはありません。 URLを提供するか、モデルでget_absolute_urlメソッドを定義します。
成功時にリダイレクトするURLを指定するにはどうすればよいですか?
success_url
?例えば.
CreateView.as_view(model=myModel, success_url="/success/")
または、名前付きビューにリダイレクトする場合:
CreateView.as_view(model=myModel, success_url=reverse('success-url'))
モデルでget_absolute_urlを定義することもできます。例えば
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
ビューに追加します。
def form_valid(self, form):
return self.render_to_response(self.get_context_data(form=form))