Examples
This page provides comprehensive examples demonstrating various features of django-nested-seed.
All examples can be found in the examples/ directory of the GitHub repository.
Basic Examples
Simple Models
Creating basic objects with primitive fields.
See: examples/01_basic_model.yaml
testapp:
Category:
- name: "Python"
description: "Python programming"
- name: "Django"
description: "Django framework"
Relationship Examples
ForeignKey (Nested)
Create related objects inline.
See: examples/02_foreign_key_nested.yaml
testapp:
Book:
- title: "Python Patterns"
publisher:
name: "Tech Books Inc"
country: "UK"
ForeignKey (Referenced)
Reference objects using $ref.
See: examples/03_foreign_key_referenced.yaml
testapp:
Publisher:
- $ref: techbooks
name: "Tech Books Inc"
country: "UK"
Book:
- title: "Python Patterns"
publisher: "$techbooks"
ForeignKey (Mixed)
Combine nested and referenced approaches.
See: examples/04_foreign_key_mixed.yaml
testapp:
Publisher:
- $ref: techbooks
name: "Tech Books Inc"
Book:
- title: "Book 1"
publisher: "$techbooks" # Referenced
- title: "Book 2"
publisher: # Nested
name: "New Publisher"
Reverse ForeignKey
Nest child collections under parent.
See: examples/05_reverse_foreign_key_nested.yaml
testapp:
Organization:
- name: "TechCorp"
divisions: # Reverse relationship
- name: "Engineering"
location: "NYC"
- name: "Sales"
location: "LA"
OneToOne Relationships
Nested one-to-one fields.
See: examples/06_one_to_one.yaml
testapp:
Organization:
- name: "TechCorp"
configuration: # OneToOne field
timezone: "UTC"
currency: "USD"
ManyToMany Examples
Basic ManyToMany
ManyToMany with references.
See: examples/07_many_to_many.yaml
testapp:
Technology:
- $ref: python
name: "Python"
- $ref: django
name: "Django"
Project:
- name: "API Rewrite"
technologies:
- "$python"
- "$django"
ManyToMany Through
ManyToMany with custom through models.
See: examples/08_many_to_many_through.yaml
testapp:
Project:
- $ref: api_project
name: "API Rewrite"
Developer:
- name: "Alice"
projects:
- project: "$api_project"
role: "Lead Developer"
start_date: "2024-01-01"
Mixed ManyToMany
ManyToMany with both references and inline objects.
See: examples/09_mixed_many_to_many.yaml
testapp:
Technology:
- $ref: python
name: "Python"
Project:
- name: "New Project"
technologies:
- "$python" # Reference
- name: "FastAPI" # Inline
Advanced Examples
Complex Multi-Level
Comprehensive example combining all features.
See: examples/10_complex_multi_level.yaml
auth:
User:
- $ref: alice
username: "alice"
email: "alice@example.com"
testapp:
Technology:
- $ref: python
name: "Python"
- $ref: django
name: "Django"
Organization:
- name: "TechCorp"
configuration:
timezone: "UTC"
divisions:
- name: "Engineering"
department_set:
- name: "Backend"
manager: "$alice"
project_set:
- name: "API Rewrite"
technologies:
- "$python"
- "$django"
task_set:
- title: "Design endpoints"
priority: "HIGH"
assigned_to: "$alice"
Database Lookup Examples
Basic Lookups
Reference existing database records.
See: examples/11_database_lookups.yaml
testapp:
Book:
- title: "New Book"
author: "@username:alice" # Lookup by field
publisher: "@pk:1" # Lookup by PK
categories:
- "@slug:python" # Lookup in M2M
- "@slug:django"
Mixed References and Lookups
Combine $ref and @lookup.
See: examples/12_mixed_ref_and_lookup.yaml
auth:
User:
- $ref: new_user
username: "bob"
testapp:
Book:
- title: "Book 1"
author: "@user__username:alice" # DB lookup
- title: "Book 2"
author: # New record
user: "$new_user" # YAML reference
pen_name: "Bob Writer"
YAML Feature Examples
YAML Anchors and Aliases
Use YAML features for DRY (Don’t Repeat Yourself).
See: examples/13_yaml_features.yaml
# YAML anchors and aliases
common_config: &common_config
timezone: "UTC"
currency: "USD"
testapp:
Organization:
- name: "Org 1"
configuration:
<<: *common_config
extra_field: "value1"
- name: "Org 2"
configuration:
<<: *common_config
extra_field: "value2"
Multi-line Strings
testapp:
Article:
- title: "Long Article"
content: |
This is a multi-line string.
It preserves line breaks.
Perfect for long text content.
Real-World Scenario
E-Commerce Seed Data
A practical example for an e-commerce application:
auth:
User:
- $ref: admin
username: "admin"
email: "admin@shop.com"
is_staff: true
is_superuser: true
shop:
# Categories
Category:
- $ref: electronics
name: "Electronics"
slug: "electronics"
- $ref: books
name: "Books"
slug: "books"
# Products
Product:
- name: "Laptop"
slug: "laptop"
category: "$electronics"
price: "999.99"
stock: 50
description: |
High-performance laptop
16GB RAM, 512GB SSD
- name: "Python Book"
slug: "python-book"
category: "$books"
price: "49.99"
stock: 100
# Customers
Customer:
- $ref: customer1
user:
username: "john"
email: "john@example.com"
phone: "555-0100"
shipping_address:
street: "123 Main St"
city: "New York"
country: "USA"
# Orders
Order:
- customer: "$customer1"
status: "COMPLETED"
items:
- product: "@slug:laptop"
quantity: 1
price: "999.99"
- product: "@slug:python-book"
quantity: 2
price: "49.99"
Running Examples
To run any example:
# Download an example
curl -O https://raw.githubusercontent.com/omaraboumrad/django-nested-seed/main/examples/01_basic_model.yaml
# Load it
python manage.py nested_seed 01_basic_model.yaml
Or load multiple examples:
python manage.py nested_seed examples/*.yaml
Next Steps
Usage Guide - Detailed usage guide
YAML Structure Reference - YAML structure reference
Database Lookups - Database lookups feature