Django ORM: Как GROUP BY поле, которое "живет" в нижней части рекурсивной модели?

Допустим, у меня есть следующие модели:

class Unit(models.Model):
    name = models.CharField(...)


class PackageDescription(models.Model):
    lower_level = models.ForeignKey("self", null=True, ...)
    unit = models.OneToOneField(Unit, null=True, ...)


class StockItem(models.Model):
    package_description = models.OneToOneField(PackageDescription, ...)

Я хочу узнать количество имен единиц в данном StockItem кверисете (qs). Если бы у нас не было этой рекурсивной природы, мы могли бы просто сделать что-то вроде:

qs.values("package_description__unit__name").annotate(count=Count("package_description__unit__name"))

Однако, PackageDescription может иметь несколько уровней, а Unit "живет" в нижней части структуры. Как бы я мог узнать, в пределах уровня DB, самый нижний уровень? И более того: как я могу GROUP BY такое поле?

NOTE: Я использую PostgreSQL.

Вернуться на верх