【发布时间】:2022-12-17 10:03:02
【问题描述】:
我有 Django 应用程序。我希望用户在浏览器中输入带有特定文章名称的 url,然后他们将看到链接到这篇文章的所有产品。我的模型是这样的:
class Article(models.Model):
slug = models.SlugField(unique=True, null=True)
title = models.CharField(max_length=20, null=True)
def __str__(self):
return self.title
class Product(models.Model):
name = models.CharField(max_length=20)
# price = models.IntegerField()
description = models.CharField(max_length=400)
a_article = models.ForeignKey(Article, on_delete=models.CASCADE, null=True)
我试图在我看来完成这项工作:
def product(request, pk):
product = models.Product.objects.filter(a_article=pk)
return render(request, 'product.html')
因为我在我的函数中传递了pk,所以我也把它放在了 url 中:
path('<str:pk>/', views.product, name='product'),
当我运行它并访问 url: http://127.0.0.1:8000/srednje/ 时,我得到一个错误:
ValueError at /srednje/
Field 'id' expected a number but got 'srednje'.
我认为这可能以某种方式链接到主键或外键但是我如何以及如何更改它才能工作?
【问题讨论】:
-
如您所见,错误说明了什么
Field 'id' expected a number but got 'srednje'.意味着你已经在你的 url 中传递了/srednje/而不是id例如。1,2,3
标签: python django django-models