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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

6250閲覧

Python/Djangoのフォームで、更新時Date項目の初期表示が空白になってしまう(更新前の値が表示されない)

ak_suzuki

総合スコア194

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/04/08 08:40

日付項目を更新するときに、更新前の値が表示されない

Python/Django でWebアプリ開発を行っています。
その際に、ユーザーからの日付を入力してもらう項目を設けています。
登録は普通に出来るのですが、更新時に画面を開くと、更新前の値が表示されず、常に空白になっています。
これだと再度ユーザーが値を入れなければならなくなるので困っています。

環境

Python 3.7.6
Django 2.2.1
bootstrap4

デザインはMaterial Bootstrapのフレームワークを使っています。
MaterialBootstrap

当該画面で使っているdatepickerはこちらです。
Datepicker

今のコード

python

1(models.py) 2 3class MyModel(models.Model): 4 start = models.DateField("開始日", blank=False)

python

1(views.py) 2 3class MyModelUpdate(UpdateView): 4 template_name = 'myapp/my_model_update.html' 5 model = MyModel 6 form_class = MyModelForm 7 8 def get_success_url(self): 9 messages.success(self.request, 'アップデートしました!') 10 return resolve_url('myapp:index')

python

1(forms.py) 2 3class MyModelForm(forms.ModelForm): 4 class Meta: 5 model = MyModel 6 fields = ['start',] 7

HTML

1(my_model_update.html) 2 3<script> 4 $(document).ready(function() { 5 $('.datepicker').pickadate({ 6 format: 'yyyy-mm-dd', 7 formatSubmit: 'yyyy-mm-dd', 8 }); 9 }); 10</script> 11 12 13 <div class="col-sm-4"> 14 <label for="text3a" class="col-form-label center">開始</label> 15 <input type="date" name="start" class="form-control datepicker" value={{form.start}}> 16 </div> 17

今の結果

更新画面
更新画面を開いた状態ですが、このように空白になってしまいます。
実際には更新前の値を持っているので、その値を表示したいです。
空白になってしまうので、このまま更新しようとするとエラーになります。(modelでblank=Falseにしているため)

なお、<script>はうまく動いており、下記のようにモーダルが出て、日付を選択できるようになっています。

カレンダー

(入力欄の後に「>」が出てしまいますが、これは別の質問をあげています。)

データは正しく更新されています。

どなたかご教授いただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

inputのvalue属性に、フィールドがレンダリングされていませんか?レンダリングしたHTMLを確認してみてください。

ちなみに、下記のようにしたらどうなりますか?

HTML

1value= "{{ form.start.value }} "

投稿2020/04/08 09:32

hasami

総合スコア1277

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

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

ak_suzuki

2020/04/08 21:20 編集

ありがとうございます。`value= "{{ form.start.value }} "`としたところ、日付入力蘭の後ろに出ていた「>」は消えました。 変更後のソースを見ると次の様になりました。 ```HTML <label for="text3a" class="col-form-label center">開始</label> <input type="date" name="start" class="form-control datepicker" value="2020年6月1日"> ``` 変更前のHTMLは、 ```HTML <label for="text3a" class="col-form-label center">開始</label> <input type="date" name="start" class="form-control datepicker" value=<input type="text" name="start" value="2020-06-01" class="form-control" required id="id_start">> ``` です。 変更前は「value="2020-06-01"」、変更後は「value="2020年6月1日"」といった具合に値自体は取ってきていますが、HTML上の表示は空白です。
guest

0

ベストアンサー

もしかしたら、Djangoの日付のフォーマットが「YYYY-MM-DD」じゃないのかもしれないですね。

htmle

1value = "{{ form.start.value|date:'Y-m-d'}}"

としてみたらどうでしょう。

投稿2020/04/08 18:40

koichi-ezato

総合スコア237

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

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

ak_suzuki

2020/04/08 21:23

ありがとうございます。 `value = "{{ form.start.value|date:'Y-m-d'}}"`としたところ解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問