反转 '' 与参数 '()' 和关键字参数 '' 未找到。尝试了 2 种模式:[]

Reverse for '' with arguments '()' and keyword arguments '' not found. 2 pattern(s) tried: []

我在我的 Django 模型中创建了一个出价 Class。当我试图获得 bid_list 它正在返回 “/bid_list/ 处的 NoReverseMatch 反向 'accept_bid' 与参数 '()' 和关键字参数 '{'user': }' 未找到。尝试了 2 种模式:['accept_bid/(?P\d+)/$', '/$']"

这是我的代码:

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 %}

您已允许用户字段为 None,但您在 get_absolute_url 方法中依赖它。由于它是空白的,因此查找失败。

URL 出价取决于用户 ID 而不是出价 ID,这似乎有点奇怪。您可能想在那里使用 self.id