gpt4 book ai didi

django - 如何过滤ForeignKey MPTT 模型的所有后代?

转载 作者:行者123 更新时间:2023-12-02 04:23:01 28 4
gpt4 key购买 nike

情况是这样的。我正在 Django 中利用 MPTT 模型来创建音乐流派的层次结构(摇滚、硬摇滚等)。我将此层次结构的节点之一分配给相册。假设我创建了一个具有硬摇滚风格的专辑对象。我如何查询我的专辑中的所有摇滚专辑并使其包含摇滚以及摇滚流派的所有后代?

class Genre(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')

class MPTTMeta:
order_insertion_by = ['name']

def __unicode__(self):
return self.name


class Album(models.Model):
name= models.CharField(max_length=200)
genre= models.ForeignKey(Genre)

最佳答案

使用get_descendants() MPTTModel 的方法:

genres = album.genre.get_descendants(include_self=True)
albums = Album.objects.filter(genre__in=genres)

关于django - 如何过滤ForeignKey MPTT 模型的所有后代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28973969/

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