【发布时间】:2021-09-17 13:44:44
【问题描述】:
我试图弄清楚我是否可以构建一个 url,它将我的模型中的对象与其他字段而不是 pk 匹配。我有一个包含许多字段的模型,我很高兴在构建 url 路径时使用简单的<int:id>,所以在这种情况下:
path("<int:pk>/", ProductDetailView.as_view(), name="product_detail")
但事情发生了变化,我们决定使用旧的 url 正则表达式,所以我们改为:
path("<slug:url>/", ProductDetailView.as_view(), name="product_detail"),
我们的模型有这个字段:
url = models.TextField(null=True)
我可以很容易地通过 url 过滤掉,像这样:
以model.filter(url='/nesiojami-kompiuteriai/nesiojami-kompiuteriai.html') 为例。
我在尝试为模型实例反转和 url 时遇到问题:
prod = Product.objects.filter(is_deleted=False, category_id=64, url__isnull=False).first()
return reverse("product:product_detail", kwargs={"url": prod.url})
NoReverseMatch at /nesiojami-kompiuteriai/nesiojami-kompiuteriai/
Reverse for 'product_detail' with keyword arguments '{'url': '/nesiojami-kompiuteriai/nesiojami-kompiuteriai/nesiojamas-kompiuteris-acer-sf314-14-i5-8265-8256gb--9618707.html'}' not found. 1 pattern(s) tried: ['product/(?P<url>[-a-zA-Z0-9_]+)/$']
【问题讨论】: