Edited at

[Django] Generic editing viewsについて [1]

More than 3 years have passed since last update.


はじめに

Generic display viewsに続いて、新規追加、編集、削除を行うGeneric editing viewsについても見てみます。


Generic editing views

今回はGeneric editing viewsについてです。


最小限で

引き続き、最小限で実装します。Generic display viewsの続きからです。


CreateView

まずは新規追加です。

veiwには利用modelとfieldを指定します。


polls/view.py

from django.views.generic.edit import CreateView

class CreateQuestionView(CreateView):

model = Question
fields = ['question_text', 'pub_date']


モデルには追加後に表示するviewをget_absolute_urlに指定します。


polls/model

class Question(models.Model):

[追加]
def get_absolute_url(self):
return reverse('polls:detail', kwargs={'pk': self.pk})


formはquestionというmodelの新規追加の場合は[model名]に_formをつけた名前のテンプレートを用意します。


templates/polls/question_form.html

<form action="" method="post">

{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create" />
</form>

urls.pyに追加します。


polls/urls.py

from django.conf.urls import url

from . import views

app_name = 'polls'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
url(r'^add$', views.CreateQuestionView.as_view(), name='add'),
]


http://127.0.0.1:8000/polls/add にアクセスします。

add2.png

値を入力し、Createボタンを押します。

add3.png

追加されたレコードがDetailに表示されます。


まとめ

長くなったので、続きます。

[Django] Generic editing viewsについて [2]


最後に

これは2015 tech-yuruyuru アドベントカレンダーの10日目の記事です。