2016-07-14 21 views
0

Ich habe eine Bid-Klasse in meinem Django-Modell erstellt. Wenn ich versuche, bid_list zu erhalten, gibt es "NoReverseMatch at/bid_list/ Reverse für 'accept_bid' mit Argumenten '()' und Schlüsselwortargumente '{' user ':}' nicht gefunden. 2 Muster (s) versucht: [ '(? P \ d +) accept_bid// $', '/ $']“Reverse für '' with arguments '()' und Schlüsselwortargumente '' nicht gefunden. 2 Muster versucht: []

Hier ist mein Code:

models.py:

class Bid(models.Model): 

    user = models.OneToOneField(User, null=True, blank=True) 
    amount = models.IntegerField() 


def get_absolute_url(self): 
    return reverse("accept_bid", kwargs={"user": self.user}) 

def __unicode__(self): 
    return self.amount 

views.py:

queryset = Bid.objects.all().order_by('amount') 

urls.py:

url(r'^bid_list/$', views.bid_list, name='bid_list'), 
url(r'^accept_bid/(?P<user>\d+)/$', views.accept_bid, name='accept_bid'), 

bid_list.html:

{% for bid in queryset %} 
<tbody> 
<tr> 
<td>{{bid.user}}</td> 

<td>{{bid.amount}}</td> 

<td> 
<input type='submit' href='{{ bid.get_absolute_url }}' value='Accept' /></td> 

</tr> 

</tbody> 
{% endfor %} 

Antwort

0

Sie das Benutzerfeld Keine sein zugelassen haben, aber Sie sind auf es in der get_absolute_url Methode verlassen. Da es leer ist, schlägt die Suche fehl.

Es scheint etwas merkwürdig, wenn die URL für ein Gebot von der Benutzer-ID, nicht aber von der Gebots-ID abhängt. Sie möchten wahrscheinlich self.id dort verwenden.

+0

Danke für Ihre freundliche Antwort. Ich konnte nicht bid.get_absolute_url in Wie kann ich das tun? – sumanth

+0

Nicht ganz sicher, was Sie tun. Eingaben haben keine Aufrufe. Was passiert, wenn Sie ein Formular absenden, wird durch das Formularelement selbst im Attribut "Aktion" gesteuert. –