【问题标题】:How do I filter for all descendants of a ForeignKey MPTT Model?如何过滤 ForeignKey MPTT 模型的所有后代?
【发布时间】:2015-03-10 20:58:20
【问题描述】:

情况是这样的。我在 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)

【问题讨论】:

    标签: django django-models django-mptt


    【解决方案1】:

    使用MPTTModelget_descendants()方法:

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

    【讨论】:

      猜你喜欢
      • 2018-12-30
      • 2010-09-20
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 2019-01-19
      • 2019-02-18
      相关资源
      最近更新 更多