나는 많은 필드를 통해 플레이어에 연결되는 수많은 게임 점수를 입력 할 수있는 formset으로 작은 앱을 구축하고 있습니다. 다양한 오류가 발생하여 제대로 저장하지 못하는 문제가 있습니다. 기본 코드.많은 필드가 포함 된 Django formset 저장하기
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