Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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 基于类别筛选公司_Python_Django_Django Models_Django Orm - Fatal编程技术网

Python 基于类别筛选公司

Python 基于类别筛选公司,python,django,django-models,django-orm,Python,Django,Django Models,Django Orm,我在Django上做这个项目是为了更深入地了解它。我在模型部分有个问题。有模型公司,产品,类别公司只是介绍部分产品是关于一家公司拥有什么样的产品及其所划分的类别,即ManyToManyField 我在一个页面中列出了所有类别,如果单击了某个类别,则应过滤拥有该类别产品的公司列表。但我不知道如何访问它 这是我的模型 class Category(models.Model): name = models.CharField(max_length=50) slug = models.S

我在Django上做这个项目是为了更深入地了解它。我在模型部分有个问题。有模型<代码>公司,
产品
类别
<代码>公司只是介绍部分<代码>产品是关于一家公司拥有什么样的产品及其所划分的类别,即
ManyToManyField

我在一个页面中列出了所有类别,如果单击了某个类别,则应过滤拥有该类别产品的公司列表。但我不知道如何访问它

这是我的模型

class Category(models.Model):
    name = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50, unique=True)

class Product(models.Model):
    name = models.CharField(max_length=200, unique=True, blank=False, null=False)
    company = models.ForeignKey('Company', related_name='products', blank=True, null=True, on_delete=models.SET_NULL)
    website = models.URLField(unique=True)
    slug = models.SlugField(unique=True)
    categories = models.ManyToManyField(Category, related_name='products')


class Company(models.Model):
    name =  models.CharField(max_length=200, unique=True, blank=False, null=False)
    slug = models.SlugField(unique=True)
    description = models.CharField(max_length=400)
    editor = models.ForeignKey(User, related_name='company')
    # product = models.ForeignKey(Product, related_name='company')

您可以应用过滤器:

Company.objects.filter(products__categories__slug=category_slug)
其中
category\u slug
是您当前选择的
category.slug的值

详情:

1) 如果我们需要获得
类别

cat = Category.objects.get(slug=category_slug)
2) 如果我们需要此类别中的所有
产品

 product_list = Product.objects.filter(categories=cat)
或者在多个模型字段名中添加双下划线

 product_list = Product.objects.filter(categories__slug=cat)
 #                                               ^^^^
3) 如果需要获取产品列表的
Company
,请在
Company
Company=models.ForeignKey('Company',related\u name='products')上的字段FK中按相关型号
product
的相关名称进行筛选

 Company.objects.filter(products__in=product_list)
 #                      ^^^^^^^
或按类别实例

 cat = Category.objects.get(slug=category_slug)
 Company.objects.filter(products__categories=cat)
或最终按类别段塞值

Company.objects.filter(products__categories__slug=category_slug)

您可以应用过滤器:

Company.objects.filter(products__categories__slug=category_slug)
其中
category\u slug
是您当前选择的
category.slug的值

详情:

1) 如果我们需要获得
类别

cat = Category.objects.get(slug=category_slug)
2) 如果我们需要此类别中的所有
产品

 product_list = Product.objects.filter(categories=cat)
或者在多个模型字段名中添加双下划线

 product_list = Product.objects.filter(categories__slug=cat)
 #                                               ^^^^
3) 如果需要获取产品列表的
Company
,请在
Company
Company=models.ForeignKey('Company',related\u name='products')上的字段FK中按相关型号
product
的相关名称进行筛选

 Company.objects.filter(products__in=product_list)
 #                      ^^^^^^^
或按类别实例

 cat = Category.objects.get(slug=category_slug)
 Company.objects.filter(products__categories=cat)
或最终按类别段塞值

Company.objects.filter(products__categories__slug=category_slug)

所以我应该使用类似“product”的url?我发现以下错误,无法将关键字“product”解析为字段。很抱歉,我错过了product中的s。请您解释一下链接,好吗?我必须说这是一个清晰的解释。我感谢您的帮助、努力和解释。谢谢您很高兴帮助您!所以我应该使用类似“product”的urln?我发现以下错误,无法将关键字“product”解析为字段。很抱歉,我错过了产品中的s。请您解释一下链接,好吗?我必须说这是现在的清晰解释。我感谢您的帮助、努力和解释。谢谢您很高兴帮助您!