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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

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

HTML

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

Q&A

解決済

1回答

2236閲覧

Djangoで保存するデータ数を可変にする方法

rererere

総合スコア13

Django

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

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

HTML

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

0グッド

0クリップ

投稿2019/01/06 06:12

前提・実現したいこと

こんにちは,はじめまして.

現在,djangoを使ってフォームの内容や画像を保存するシステムを作成しています.

システムの要件は,
⑴氏名,ユーザの情報,画像を保存ボタンにより保存することができる.
⑵保存する画像,情報の数を可変にする(0〜ユーザの設定により未定義数)

⑴についてはなんとか作成できたのですが,⑵について,そもそもそれが可能であるのかがわかりません.

こちらで最初から登録できるデータの数を設定し,その数のモデルフォームを作るしかないのでしょうか?

これが可能であるのか,また,可能であれば方法をご教授願えませんでしょうか.

現在のシステム(氏名と画像部分)

一応,現在のシステムの氏名・画像部分を記述します.
抜粋箇所が間違っていれば申し訳ありません,

Python

1# viws.py 2from .forms import PersonalForm 3from .forms import PhotoForm 4from .models import Person 5 6def forms(request): 7 date = GetDate.output_date() 8 d = { 9 'pform': PersonalForm(), 10 'photoform': PhotoForm(), 11 } 12 13 if (request.method == 'POST'): 14 personalform = PersonalForm(request.POST) 15 photoform = PhotoForm(request.POST,request.FILES) 16 17 if not personalform.is_valid(): 18 return HttpResponse(personalform.errors) 19 if not photoform.is_valid(): 20 return HttpResponse(photoform.errors) 21 22 person = Person() 23 person.name = personalform.cleaned_data['name'] 24 person.image = photoform.cleaned_data['image'] 25 person.save() 26 return redirect(to='myappli:forms') 27 28 return render(request, 'index.html', d) 29

HTML

1# index.html 2<!DOCTYPE html> 3<html> 4<head lang="ja"> 5 <meta charset="UTF-8"> 6 <title></title> 7</head> 8<body> 9 10 <form action="{% url 'myappli:forms' %}" method="POST" enctype="multipart/form-data"> 11 {% csrf_token %} 12 <br> 13 <table>{{pform.as_table}}</table> 14 15 <input id ="id_image" type="file" name="image" onchange="OnFileSelect( this );" accept="image/*" multiple="multiple" /> 16 <ul id="ID001" ></ul> 17 {% csrf_token %} 18 {{ form }} 19 20 <input type="submit" name="end" value="送信"> 21</form> 22</body> 23</html> 24

python

1# models.py 2class Person(models.Model): 3 name = models.CharField(max_length=100) 4 image = models.ImageField(upload_to="image/")

python

1# forms.py 2class PersonalForm(forms.Form): 3 name = forms.CharField( 4 max_length=100, 5 required=False, 6 label='名前', 7 ) 8class PhotoForm(forms.Form): 9 image = forms.ImageField(required=False)

長くなっていまい申し訳ありません,よろしくおねがいします.

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

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

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

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

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

guest

回答1

0

ベストアンサー

Django には 複数フォームを扱うための formsetという仕組みがあります。 それを使えば、ある程度やりたいことはできるかと思います。

ただユーザーが、任意で画像の数を決められるようには、jsも絡んだ工夫が必要になる可能性があるので、最初は数を決め打ちでやってみてから、上手くいったら、チャレンジしてるみる方が良いです。

ちなみに、現状では 1Personにつき1画像(image)しか持てないデータモデルになっているので、データモデルの見直しから必要になってくると思います。

投稿2019/01/06 10:46

tell_k

総合スコア2120

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

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

rererere

2019/01/08 17:15

ご回答ありがとうございます!決め打ちから試して見たほうがよいのですね. urlを参考にさせていただきます.ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問