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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

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

Q&A

解決済

1回答

2023閲覧

Django HTMLから空の値を送信した時にmodels.pyで指定したdefaultが適用されない。

Malo

総合スコア19

Django

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

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

0グッド

1クリップ

投稿2019/07/24 00:16

現在、HTMLのinputタグからデータを送信し、データベースに追加していくという事を実装しようとしているのですが、何も入力しないまま送信すると、Djangoのmodels.pyの中でフィールドに指定しているdefaultの値が適用されません。
どのようにすれば、何も入力しないまま送信した際に、defaultを適用できますか?
拙い文章で申し訳ありません。以下がコードになります。

・models.py

Python

1from django.db import models 2from django.core.mail import send_mail 3from django.contrib.auth.models import PermissionsMixin 4from django.contrib.auth.base_user import AbstractBaseUser 5from django.utils.translation import ugettext_lazy as _ 6from django.utils import timezone 7from django.contrib.auth.base_user import BaseUserManager 8 9 10class RoomModel(models.Model): 11 title = models.CharField(max_length=50) 12 author = models.CharField(max_length=100) 13 position_1 = models.CharField(max_length=30, default='賛成', blank=True) 14 position_2 = models.CharField(max_length=30, default='反対', blank=True) 15 position_3 = models.CharField(max_length=30, default='', blank=True) 16 position_4 = models.CharField(max_length=30, default='', blank=True) 17 position_5 = models.CharField(max_length=30, default='', blank=True) 18 duedate = models.DateField(auto_now_add=True)

・views.py

Python

1class RoomCreate(CreateView): 2 template_name = 'room_create.html' 3 model = RoomModel 4 fields = {'title', 'author', 'position_1', 'position_2', 'position_3', 'position_4', 'position_5'} 5 success_url = reverse_lazy('home') 6

HTML

1{% extends 'base.html' %} 2 3{% block content %} 4<form action="" method="POST" enctype="multipart/form-data">{% csrf_token %} 5 <p>タイトル: <input type="text" name="title"></p> 6 <p>ポジション1: <input type="text" name="position_1"></p> 7 <p>ポジション2: <input type="text" name="position_2"></p> 8 <p>ポジション3: <input type="text" name="position_3"></p> 9 <p>ポジション4: <input type="text" name="position_4"></p> 10 <p>ポジション5: <input type="text" name="position_5"></p> 11 12 <input type="hidden" name="author" value="{{ user.email }}"> 13 <input type="submit" value="Create!"> 14</form> 15 16{% endblock content %} 17 18 19{% block script %} 20{% endblock script %}

初学者ゆえ、足りない情報などもあると思います。
ご指摘いただければ、随時追記させて頂きますので、宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

もう既に解決済みかも知れませんが、気になって同じようなモデルとFormを作って試して見ました。
何も入力しないままサブミットされた場合は空文字が入るみたいです。
ただ、下記のように直接Modelを作成した場合はDefault値がデータベースに保存されます。参考までに。

python

1>> from model.py import RoomModel 2 3>> room_model = RoomModel.objects.create(title='タイトル', author='作成者') 4>> print(room_model. position_1) 5賛成 6>> print(room_model. position_2) 7反対

投稿2019/08/01 10:29

shotanuki

総合スコア102

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問