我有两个型号
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
....
我想创建一个Brand的查询集,该查询集由车辆过滤并按名称区分。
所以我可以在我的模板中创建一个表单,该表单将包含一个下拉过滤器,其中所有品牌与车辆类别相关且没有名称重复
name category
---- ---------
BMW car
toyota car
mercedes truck
有没有选择以简单的方式做到这一点,还是我需要为此编写一个函数?
我看到了一个例子
Select DISTINCT individual columns in django?
但它返回ValuesQuerySet
我需要QuerySet
,我不想使用仅在PostgreSQL上支持的().distinct('someItem')
。
答案 0 :(得分:0)
避免在QuerySet中重复的最简单方法是在品牌和类别模型的名称字段中添加unique constraint。这将阻止重复插入到第一位。
当您尝试创建数据库中已存在名称的品牌或类别时,约束将导致抛出IntegrityError。您可以使用ModelName.objects.get_or_create
代替ModelName.objects.create()
来避免错误。