前提・実現したいこと
djangoでhtmlじょうのformに入力された情報をデータベースに保存するまでの一連の流れをできるようにしたいです。
エラー内容について調べるとタイプミスが原因だといわれているが自分の場合はタイプミスはないように思う。
発生している問題・エラーメッセージ
ValueError: ModelForm has no model class specified.
該当のソースコード
views.py
from .forms import PlayerForm from django.shortcuts import render def makedata(request): if request.method == 'POST': form = PlayerForm(request.POST) if form.is_valid(): post = form.save(commit=False) post.save() else: form = PlayerForm() return render(request, 'makedata.html', {'form': form})
forms.py
from django import forms from .models import Post class PlayerForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['player1'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player2'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player3'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player4'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player5'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player6'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player7'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player8'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player9'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player10'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player11'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player12'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player13'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player14'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player15'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player16'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player17'].widget.attrs({'placeholder':'選手名を入力してください',}) self.fields['player18'].widget.attrs({'placeholder':'選手名を入力してください',}) class Meta: model = Post fields = ['player1', 'player2', 'player3', 'player4', 'player5', 'player6', 'player7', 'player8', 'player9', 'player10', 'player11', 'player12', 'player13', 'player14', 'player15', 'player16', 'player17', 'player18']
models.py
from django.db import models class Post(models.Model): player1 = models.CharField(max_length=20) player2 = models.CharField(max_length=20) player3 = models.CharField(max_length=20) player4 = models.CharField(max_length=20) player5 = models.CharField(max_length=20) player6 = models.CharField(max_length=20) player7 = models.CharField(max_length=20) player8 = models.CharField(max_length=20) player9 = models.CharField(max_length=20) player10 = models.CharField(max_length=20) player11 = models.CharField(max_length=20) player12 = models.CharField(max_length=20) player13 = models.CharField(max_length=20) player14 = models.CharField(max_length=20) player15 = models.CharField(max_length=20) player16 = models.CharField(max_length=20) player17 = models.CharField(max_length=20) player18 = models.CharField(max_length=20)
makedata.html
<form action="{% url 'makedata' %}" method="POST"> <div class="popup" id="js-popup"> <div class="popup-inner"> <div class="close-btn" id="js-close-btn"><i class="fas fa-times"></i></div> <a href="#"> <div class="foo"> <div class="box_left"> <h1>先攻</h1> <table id="example" class="table table-striped table-bordered" cellspacing="0" > <thead> <tr> <th>打順</th> <th class="player">名前</th> <th>右・左打ち</th> <th>投手</th> </tr> </thead> <tbody> <tr> <td>1</td> <td class="player">{{ form.player1 }}</td> <td>2016/01/15</td> <td>Done</td> </tr> <tr> <td>2</td> <td class="player">{{ form.player2 }}</td> <td>2016/01/31</td> <td>Planned</td> </tr> <tr> <td>3</td> <td class="player">{{ form.player3 }}</td> <td>2016/01/23</td> <td>To Do</td> </tr> <tr> <td>4</td> <td class="player">{{ form.player4 }}</td> <td>2016/02/26</td> <td>Done</td> </tr> <tr> <td>5</td> <td class="player">{{ form.player5 }}</td> <td>2016/02/18</td> <td>Planned</td> </tr> <tr> <td>6</td> <td class="player">{{ form.player6 }}</td> <td>2016/03/17</td> <td>To Do</td> </tr> <tr> <td>7</td> <td class="player">{{ form.player7 }}</td> <td>2016/05/28</td> <td>Confirmed</td> </tr> <tr> <td>8</td> <td class="player">{{ form.player8 }}</td> <td>2016/04/19</td> <td>Offer</td> </tr> <tr> <td>9</td> <td class="player">{{ form.player9 }}</td> <td>2016/10/31</td> <td>Confirmed</td> </tr> </tbody> </table> </div> <div class="box_left"> <h1>後攻</h1> <table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%"> <thead> <tr> <th>打順</th> <th class="player">名前</th> <th>右・左打ち</th> <th>投手</th> </tr> </thead> <tbody> <tr> <td>1</td> <td class="player">{{ form.player10 }}</td> <td>2016/01/15</td> <td>Done</td> </tr> <tr> <td>2</td> <td class="player">{{ form.player11 }}</td> <td>2016/01/31</td> <td>Planned</td> </tr> <tr> <td>3</td> <td class="player">{{ form.player12 }}</td> <td>2016/01/23</td> <td>To Do</td> </tr> <tr> <td>4</td> <td class="player">{{ form.player13 }}</td> <td>2016/02/26</td> <td>Done</td> </tr> <tr> <td>5</td> <td class="player">{{ form.player14 }}</td> <td>2016/02/18</td> <td>Planned</td> </tr> <tr> <td>6</td> <td class="player">{{ form.player15 }}</td> <td>2016/03/17</td> <td>To Do</td> </tr> <tr> <td>7</td> <td class="player">{{ form.player16 }}</td> <td>2016/05/28</td> <td>Confirmed</td> </tr> <tr> <td>8</td> <td class="player">{{ form.player17 }}</td> <td>2016/04/19</td> <td>Offer</td> </tr> <tr> <td>9</td> <td class="player">{{ form.player18 }}</td> <td>2016/10/31</td> <td>Confirmed</td> </tr> </tbody> </table> </div> <button type="submit" value="試合開始">試合開始</button> </form> </div> </a> </div> <div class="black-background" id="js-black-bg"></div> </div> {% csrf_token %} </form>
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/04 03:22
2020/06/04 03:33 編集
2020/06/04 03:35
2020/06/04 04:11