django 模型 return 个唯一值
django model return unique values
我的模型中有两个 class:
class Block(models.Model):
block_name = models.CharField(max_length=20)
class Flat(models.Model):
block = models.ForeignKey(Block)
flat_name = models.CharField(max_length=20)
它给了我以下名称的示例块:
block1
block2
block3
和以下名称的公寓:
pink_flat FK to block1
red_flat FK to block2
yellow_flat FK to block3
pink_flat FK to block2
pink_flat FK to block3
问题:
我应该在 Block class 中创建什么函数,这样我就可以 return 所有 Flat 的唯一名称,例如对于上面的示例,我想 return pink_flat, red_flat, yellow_flat
并跳过 pink_flat 不止一次出现的事实。
所以,基本上我想 return 每个块 flat_names 唯一
我知道我可以在我的 Block class 中创建函数,这样我就可以过滤 Flats:
def flats_related(self):
return Flat.objects.filter(block=self.id)
您可以简单地使用 .distinct()
Flat.objects.order_by('flat_name').distinct('flat_name')
**编辑:**
以上代码仅适用于 PostgreSQL。
对于每个块
block.flat_set().all()
应该给你那个街区的所有单位。然后你可以使用 distinct()
只留下唯一的。全部一起:
block.flat_set().all().distinct('flat_name')
您可以在这里阅读:
https://docs.djangoproject.com/en/1.9/topics/db/queries/#following-relationships-backward
我的模型中有两个 class:
class Block(models.Model):
block_name = models.CharField(max_length=20)
class Flat(models.Model):
block = models.ForeignKey(Block)
flat_name = models.CharField(max_length=20)
它给了我以下名称的示例块:
block1
block2
block3
和以下名称的公寓:
pink_flat FK to block1
red_flat FK to block2
yellow_flat FK to block3
pink_flat FK to block2
pink_flat FK to block3
问题:
我应该在 Block class 中创建什么函数,这样我就可以 return 所有 Flat 的唯一名称,例如对于上面的示例,我想 return pink_flat, red_flat, yellow_flat
并跳过 pink_flat 不止一次出现的事实。
所以,基本上我想 return 每个块 flat_names 唯一
我知道我可以在我的 Block class 中创建函数,这样我就可以过滤 Flats:
def flats_related(self):
return Flat.objects.filter(block=self.id)
您可以简单地使用 .distinct()
Flat.objects.order_by('flat_name').distinct('flat_name')
**编辑:** 以上代码仅适用于 PostgreSQL。
对于每个块
block.flat_set().all()
应该给你那个街区的所有单位。然后你可以使用 distinct()
只留下唯一的。全部一起:
block.flat_set().all().distinct('flat_name')
您可以在这里阅读: https://docs.djangoproject.com/en/1.9/topics/db/queries/#following-relationships-backward