gpt4 book ai didi

python - Django 模型过滤并按特定列区分

转载 作者:行者123 更新时间:2023-12-05 07:40:26 24 4
gpt4 key购买 nike

我有两个模型

class Category(models.Model):
name= models.TextField(max_length=255)
parent = models.ForeignKey('self', null=True, blank=True)

class Brand(models.Model):
category = models.ForeignKey(Category)
name= models.TextField(max_length=255)

例如:

类别

         name        parent
------- -------
vehicle 0
car 1
motorcycle 1
truck 1
bicycle 1
fff 0
....

品牌

            name      category
---- ---------
BMW car
BMW truck
BMW bicycle
toyota car
mercedes car
mercedes truck
someThing fff
....

我想创建一个按车辆过滤并按名称区分的品牌查询集。

所以我可以在我的模板中创建一个表单,该表单将包含一个下拉过滤器,其中包含与车辆类别相关的所有品牌,且名称不重复

            name     category
---- ---------
BMW car
toyota car
mercedes truck

是否有任何选项可以以简单的方式完成,或者我是否需要为此编写一个函数?

我看到一个例子
Select DISTINCT individual columns in django?但它返回一个 ValuesQuerySet,我需要一个 QuerySet,我不想使用受支持的 ().distinct('someItem')仅在 PostgreSQL 上。

最佳答案

避免 QuerySet 重复的最简单方法是添加 unique constraint在您的品牌和类别模型的名称字段上。这将从一开始就阻止重复项被插入。

每当您尝试创建名称已存在于数据库中的品牌或类别时,该约束将导致抛出 IntegrityError。您可以使用 ModelName.objects.get_or_create 来避免错误而不是 ModelName.objects.create()

关于python - Django 模型过滤并按特定列区分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46198830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com