私はフォームセットを使用して、少数のアプリケーションを構築しています。私はこれを様々なエラーで適切に保存するのに問題があります。基本コード。多人数フィールドでDjangoフォームセットを保存する
Model.py
class Player(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name
class Score(models.Model):
score = models.DecimalField(max_digits=4, decimal_places=0)
turn = models.ForeignKey(Turn)
players = models.ManyToManyField(Player)
def __unicode__(self):
return self.score
各スコアは、その後順番に連結されているが、私はそのビットを示していません。
Form.py
class NewScore(ModelForm):
class Meta:
model = Score
fields = ('score', 'players',)
View.py
def newscore(request):
NewScoreFormSet = formset_factory(NewScore, extra=2)
if request.method == 'POST':
formset = NewScoreFormSet(request.POST)
if formset.is_valid():
t = Turn.objects.latest('id')
for form in formset:
p = form.cleaned_data.get('players')
scoreSave = form.save(commit=False)
scoreSave.turn = t
scoreSave.save()
scoreSave.players.add(p)
else:
print 'Formset not OK'
return render(request, 'scorer/game.html',
{})
else:
formset = NewScoreFormSet()
return render(request, 'scorer/game.html',
{'formset': formset,})
問題は、周りのプレイヤーが多くの分野に多くて保存され、この現在の設定では、私は、エラーメッセージが表示されますなっているようです
TypeError: int() argument must be a string or a number, not 'QuerySet'
私もこのラインを削除しようとしました
scoreSave.players.add(p)
しかし、これはプレーヤーをまったく保存しません。ちょうどスコアとターン。
ありがとうございました! – Spinnaay