get() nimmt keine Keyword-Argumente: Django Tutorial mit verschiedenen Modellen
Hier ist meine Glücksspiel-Ansicht in views.py
def gambling(request, profile_id):
Profile = get_object_or_404(profile, pk=profile_id)
coin = get_object_or_404(Coin, pk=profile_id)
try:
selected_choice = coin.Face.get(pk=request.POST['name'])
except (KeyError, Coin.DoesNotExist):
# Redisplay the question voting form.
return render(request, 'gamble/detail.html', {
'Profile': Profile,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.Face
selected_choice.save()
return HttpResponseRedirect(reverse('gamble:results', args=(profile.id,)))
Hier ist die Form, in detail.html
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
<form action="{% url 'gamble:gambling' Profile.id %}" method="post">
{% csrf_token %}
{% for choice in coin.Face %}
<input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
<label for="choice{{ forloop.counter }}"> {{ choice }}</label><br />
{% endfor %}
<input type="submit" value="flip" />
</form>
Hier ist mein Code für die Modelle Profil und Münze in models.py
# Create your models here.
class profile(models.Model):
name = models.CharField(max_length=120)
description = models.TextField(default='description default text')
def __unicode__(self):
return self.name
class Coin(models.Model):
#choice = models.ForeignKey(BetAmount, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200, default="...")
flip = randint(0,1)
Heads =0
Tails =1
Face ={
"Heads": Heads,
"Tails": Tails
}
def __str__(self):
return self.choice_text
def flipped(self):
return self.flip
Ich bekomme den Fehler über .get(), obwohl ich den Formularnamen übergebe, ich bin mir nicht sicher, ob es mit dem Coin-Objekt selbst zu tun hat, Klarheit in der Sache würde helfen. Gibt es etwas, das mir im Coin-Modell fehlt, oder ist das Problem immer noch im Detail.html, habe ich Code so nah wie möglich an das Tutorial-Beispiel geschrieben.
Veröffentlichen Sie die vollständige Fehlermeldung wörtlich. Umschreibe nicht. –
Der Traceback wird * dir sagen, ob es mit dem Coin-Objekt zu tun hat. Veröffentliche es. –