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

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

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

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

HTML5

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Python

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

Q&A

解決済

1回答

1516閲覧

django システム側で出された値を、フォームを使わずにDBに保存する方法

penpenpen

総合スコア11

Django

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

HTML5

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Python

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

0グッド

0クリップ

投稿2022/01/18 05:54

# class resu_DB_Add(forms.ModelForm): class Meta: model = models.resu_DB fields = ["users","code",'masseg','creat_times',"updete_times"] #VIEW if (request.method == 'POST'): form = resu_DB_Add(request.POST) if form.is_valid(): resu_db_=form.save(commit=False) resu_db_.code=sled_num resu_db_.creat_times=timezone.now() resu_db_.updete_times=timezone.now() resu_db_.users="test_user" #HTML <form action="{% url 'sns:sled_page' sled_num%}" method="post"> {% csrf_token %} <table> {{ form }} <tr> <td><input type="submit" value="送信"></td> </tr> <table>

やりたいこと
'masseg'以外はユーザーがいじれないようにし(htmlで表示しない)、ほかはシステムによって自動で埋まるようにしたいです しかし現在のコードでは一度すべてのフィールドを入力させform.save(commit=False)のあとシステムで上書きしている状態です

①{{form.as_table }}
② {{ form }}
③{{ form.○○ }} をすべて記入
④管理画面から手動
調べていくつか出てくる方法はいずれもすべてを入力できるようにする方法です
massegのみを入力できるようにし"users","code",'creat_times',"updete_times"この四つをフォームで表示せず保存する方法を教えてください

試したこと
{{ form.○○ }} を表示させたいやつだけやればいいかと思い{{ form.masseg }}のみを設置しましたが
if form.is_valid():をクリアできませんでした

<form action="{% url 'sns:sled_page' sled_num%}" method="post"> {% csrf_token %} <table> {{ form.masseg }} <tr> <td><input type="submit" value="送信"></td> </tr> <table>

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

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

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

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

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

guest

回答1

0

ベストアンサー

viewやformクラスをどのように実装しているかによりますが、
自動で埋まるようにしたい"users","code",'creat_times',"updete_times"の項目をformクラスやview関数で補完してあげる必要があります。

python

1# views.py 2 if (request.method == 'POST'): 3 form = resu_DB_Add(request.POST, initial={ 4 "code": "xxxx", # 入れたい値を入れる 5 "user": request,user # ログイン機能がある場合 6 "user": User.objects.get(xxxx) # 特定ユーザを固定で入れる場合 7 })

それぞれどんな値を入れたいかに合わせて適当に変更してください。

create_timesや、updete_timesについては、モデル側でデフォルトの振る舞いを指定することで、自動的に埋まるようにできます。

python

1models.py 2class resu_DB(models.Model): 3 : 4 : 5 create_times = models.DateTimeField(auto_now_add=True) 6 update_times = models.DateTimeField(auto_now=True)

python

1# forms.py 2class resu_DB_Add(forms.ModelForm): 3 class Meta: 4 model = models.resu_DB 5 fields = ["users","code","masseg"] 6 # "create_times","updete_times"は、formで指定しなくてもmodel側で自動的に埋めてくれるので削除

上記のように指定することで、エントリ作成時、更新時に自動的に値が更新されます

投稿2022/01/18 13:19

編集2022/01/18 13:41
mt-snow

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問