Python 如何在Django中的另一个类别下获得具有相同名称的特定子类别?
我有一个商店应用程序,有Python 如何在Django中的另一个类别下获得具有相同名称的特定子类别?,python,django,Python,Django,我有一个商店应用程序,有类别和子类别,我有3个类别,每个类别下都有一个名为其他的子类别,当我点击url时,我得到这个错误: multipleobjects在/categories/subcategory/Other返回,get()返回了多个子类别——它返回了3 我确实意识到使用filter不是一个选项,因为它将返回3个值,并且url不能接受queryset作为参数,我是否可以使用subcategory的categorytitle来过滤查询,或者您还有其他想法 代码如下: url.py path(
类别
和子类别
,我有3个类别,每个类别下都有一个名为其他
的子类别,当我点击url
时,我得到这个错误:
multipleobjects在/categories/subcategory/Other返回,get()返回了多个子类别——它返回了3代码>
我确实意识到使用filter
不是一个选项,因为它将返回3个值,并且url不能接受queryset作为参数,我是否可以使用subcategory的categorytitle
来过滤查询,或者您还有其他想法
代码如下:
url.py
path('subcategory/<str:title>/', views.subcategory, name='subcategory'),
def subcategory(request, title):
subcategory = SubCategory.objects.get(title=title)
products = Product.objects.filter(subcategory=subcategory)
return render(request, 'subcategory.html', {'subcategory': subcategory,
'products': products})
class Category(models.Model):
title = models.CharField(max_length=200, unique=True, blank=False, null=False)
class SubCategory(models.Model):
title = models.CharField(max_length=200, unique=False, blank=False)
category = models.ForeignKey(Category,
related_name='subcategories',
on_delete=models.CASCADE)
以下是我的模型:
型号.py
path('subcategory/<str:title>/', views.subcategory, name='subcategory'),
def subcategory(request, title):
subcategory = SubCategory.objects.get(title=title)
products = Product.objects.filter(subcategory=subcategory)
return render(request, 'subcategory.html', {'subcategory': subcategory,
'products': products})
class Category(models.Model):
title = models.CharField(max_length=200, unique=True, blank=False, null=False)
class SubCategory(models.Model):
title = models.CharField(max_length=200, unique=False, blank=False)
category = models.ForeignKey(Category,
related_name='subcategories',
on_delete=models.CASCADE)
您可以使用以下选项过滤产品
:
products = Product.objects.filter(subcategory__title=title)
请显示您的模型。py您可以通过编写子类别.objects.filter(title=title).last()
来消除错误。但我认为这不是你想要的。为什么要使用url中的非唯一字段作为标识符?(包括有问题的模型将有助于获得更清晰的答案)。好的,我将在一秒钟内包括我的模型IT have me精确查找的QuerySet值必须使用切片限制为一个结果,另外,我在模板中使用了一种url路径,它使用子类别
作为url
参数,因此queryset实际上不是一个选项here@SLDem:是的,我打错了:它是s/=subcategory/=title/
。你能把这部分解释清楚一点吗s/=subcategory/=title/
,意志try@SLDem:这在标题中是不可能的,因为同名的两个子类别之间没有区别。例如,您还可以添加“类别”(父级)以使筛选更精确,或者使用子类别的主键。