我有django应用程序。我希望用户在浏览器中键入特定文章名称的网址,然后他们会看到链接到这篇文章的所有产品。我的模型看起来像这样:
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)
我试着从我的Angular 来看待这个作品:
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'.
我想这可能与主键或外键有某种联系,但我如何才能改变它呢?
1条答案
按热度按时间xghobddn1#
在您的视图中,您必须将
product
行更改为:如果要根据项目主键获取产品,则应使用
建议根据您所引用的字段名称来使用名称,所以如果您想按文章块取数,建议用途:
views.py
urls.py