CreateView
モデルの作成に使われる、汎用ビューの一つである
汎用ビューを用いることでコードの量を減らすことができる
こたえ: get_form()
views.py
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
template_name = "post.html"
fields = ['shop_name', 'shop_link']
success_url = reverse_lazy('APP:posted')
#ラベルを日本語に
def get_form(self, form_class=None):
form = super().get_form(form_class)
form.fields['shop_name'].label = '店名'
form.fields['shop_link'].label = 'お店のURL'
return form
#ログインユーザーで投稿
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)
注
CreateViewを使用しないときはforms.pyで
forms.py
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['shop_name', 'shop_link']
#これを記述
labels={
'shop_name':'店名',
'shop_link':'お店のリンク(ラーメンDB等)'
}
とする。
(CreateViewではこれが反映されなかったけど、普通はされるのかな...??)