Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中的另一个类别下获得具有相同名称的特定子类别?_Python_Django - Fatal编程技术网

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的category
title
来过滤查询,或者您还有其他想法

代码如下:

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:这在
标题中是不可能的,因为同名的两个子类别之间没有区别。例如,您还可以添加“类别”(父级)以使筛选更精确,或者使用子类别的主键。