Skip to content

Django Nested Values

An experimental package that adds .values_nested() to Django querysets, returning nested dictionaries with related objects included.

Quick Example

from django_nested_values import NestedValuesQuerySet

class Book(models.Model):
    title = models.CharField(max_length=200)
    publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
    authors = models.ManyToManyField("Author")

    objects = NestedValuesQuerySet.as_manager()

# Returns dicts with nested related data
books = (
    Book.objects
    .only("title")
    .select_related("publisher")
    .prefetch_related("authors")
    .values_nested()
)
# [{"id": 1, "title": "...", "publisher": {"id": 1, "name": "..."}, "authors": [...]}, ...]

Key Features

  • Familiar API: Uses standard Django patterns (only(), select_related(), prefetch_related())
  • ForeignKey via JOIN: select_related() uses efficient single-query JOINs
  • M2M/Reverse FK via prefetch: prefetch_related() for multi-valued relations
  • No model instantiation: Returns dicts directly from the database

Requirements

  • Python 3.13+
  • Django 5.2+