質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1446閲覧

django:UpdateViewとCreateViewの見た目が一致しない

wayway

総合スコア11

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/09/05 02:50

####状況
django初心者です。ブログアプリの様なものを作ろうとしています。
投稿記事の更新ページをUpdateViewをベースに作成しようとしているのですが、見た目がCreateViewと一致しません。

どなたか、対応方針をご教示頂けると幸いです。

####詳細
下記の様に、初回投稿用のviewとtemplateを用意しました。

python

1(view.py) 2class PostCreateForm(forms.ModelForm): 3 class Meta: 4 model = Post 5 fields = ['is_public', 'title', 'content', 'tags'] 6 widgets = { 7 'tags' : CustomCheckboxSelectMultiple 8 } 9 10 11class PostCreateView(LoginRequiredMixin, CreateView): 12 form_class = PostCreateForm 13 model = Post 14 15 def form_valid(self, form): 16 form.instance.author = self.request.user 17 return super().form_valid(form)

python

1(post_form.html) 2{% extends "original_blog/base.html" %} 3{% load crispy_forms_tags %} 4{% load widget_tweaks %} 5{% load myfilters %} 6 7{% block content %} 8 <div class="content-section"> 9 <form method = "POST"> 10 {% csrf_token %} 11 <fieldset class="form-group"> 12 <legend class="border-bottom mb-4">投稿フォーム</legend> 13 <div class="post-items"> 14 公開: 15 {{ form.is_public|addclass:'post-is_public'}} 16 タイトル: 17 {{ form.title|addclass:'post-title' }} 18 本文: 19 {{ form.content|addclass:'post-content' }} 20 </div> 21 <div class="post-tags mb-4"> 22 タグ:<br> 23 {{ form.tags|addclass:'post-tags custom-checkbox' }} 24 </div> 25 26 <div class="post-submit"> 27 <button class="btn btn-outline-info" type="submit">投稿</button> 28 </div> 29 </fieldset> 30 </form> 31 </div> 32{% endblock content %}

結果、下記の様な見た目が得られました。
![イメージ説明

一方で、記事の更新を下記の様にUpdateViewをベースに作成しましたが、見た目が一致しません。(タグが表示されない)

python

1class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): 2 model = Post 3 fields = ['is_public', 'title', 'content', 'tags'] 4 5 def form_valid(self, form): 6 form.instance.author = self.request.user 7 return super().form_valid(form) 8 9 def test_func(self): 10 post = self.get_object() 11 if self.request.user == post.author: 12 return True 13 return False

イメージ説明

対応方針、確認ポイントがお分かりになる方、ご教示頂けますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Python

1class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): 2 form_class = PostCreateForm 3 model = Post 4 5 def form_valid(self, form): 6 form.instance.author = self.request.user 7 return super().form_valid(form) 8 9 def test_func(self): 10 post = self.get_object() 11 if self.request.user == post.author: 12 return True 13 return False 14```にしたらどうですか?

widgets = {
'tags' : CustomCheckboxSelectMultiple
}

投稿2020/09/05 19:29

ForestSeo

総合スコア2720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wayway

2020/09/06 00:43

あ、、、 その通りでした!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問