私はcookiecutter djangoをインストールし、すべてを稼働させました。更新ビューがモデルを更新しないという問題が発生しました。フローを自分自身にリダイレクトし続けるだけです。
夢/models.py
class Dream(models.Model):
title = models.CharField(_('dream title'), max_length=60)
slug = models.SlugField(editable=False)
writeup = models.TextField(default="Boilerplate")
slug フィールドは、オブジェクトの保存時にタイトルから作成されます。
夢/urls.py
url(
regex=r'^$',
view=views.DreamListView.as_view(),
name='list'
),
url(
regex=r'^(?P<slug>[\w.@+-]+)/$',
view=views.DreamDetailView.as_view(),
name='detail'
),
url(
regex=r'^(?P<slug>[\w.@+-]+)/update/$',
view=views.DreamUpdateView.as_view(),
name='update'
),
夢/views.py
class DreamListView(ListView):
model = Dream
queryset = Dream.objects.all().filter(in_production=True)
# These next two lines tell the view to index lookups by slug
slug_field = 'slug'
slug_url_kwarg = 'slug'
class DreamDetailView(DetailView):
model = Dream
# These next two lines tell the view to index lookups by slug
slug_field = 'slug'
slug_url_kwarg = 'slug'
class DreamUpdateView(UpdateView):
model = Dream
fields =['title', 'writeup', ]
def get_success_url(self):
return reverse('dreams:detail', kwargs={'slug': self.get_object().slug})
slug_field = 'slug'
slug_url_kwarg = 'slug'
更新ビューのテンプレート
{% extends "base.html" %}
{% load static %}{% load i18n %}
{% block title %}Edit Dream - {{ dream.title }}{% endblock %}
{% block content %}
<form action="" method=”post”>
{% csrf_token %}
{{ form.as_p }}
<div class="control-group">
<div class="controls">
<button type="submit" class="btn">Update</button>
</div>
</div>
</form>
{% endblock %}
localhost:8000//update 経由でフォームにアクセスできます
値を変更して [更新] をクリックすると、フォームが元のデータで再表示されます。詳細ページにはリダイレクトされません。更新に失敗していると思います。失敗の原因を確認する方法はありますか?
ありがとう。