Breeding App Reference¶
The Breeding app manages queen breeding programs and colony reproduction tracking, including grafting, rearing, colony splitting operations, and status audit trails.
Overview¶
Location: app/breeding/
Purpose: Queen breeding programs and colony reproduction
Key Models: QueenBreeding, ColonySplit, BreedingStatusChange, SplitStatusChange
File Structure¶
breeding/
├── models.py # 4 models (QueenBreeding, ColonySplit, BreedingStatusChange, SplitStatusChange)
├── views.py # 8 view classes
├── forms.py # 4 forms (2 model forms + 2 filter forms)
├── urls.py # 8 URL patterns
├── signals_status.py # 4 signal handlers (status change tracking)
├── apps.py # AppConfig with signal import
├── admin.py # Django admin config
├── tests/ # Integration tests
│ └── test_breeding_integration.py
└── templates/breeding/ # Breeding and split templates
Models¶
See Database Models - Breeding App for complete field reference.
QueenBreeding¶
Records queen breeding sessions from planning through laying. Uses OrgPermissionMixin with breeder as the permission owner field.
Breeding Methods: Configurable via System Configuration (breeding_method category)
Status Progression:
Planning → Grafted → Accepted → Capped → Emerged → Mated → Laying
↓ ↓ ↓ ↓ ↓ ↓
Failed Failed Failed Failed Failed Failed
Each status can transition to "Failed" at any stage. Both "Laying" and "Failed" are terminal states.
Key Fields:
- Timeline:
breeding_date,graft_date,emergence_date,mating_flight_date,first_laying_date - Outcomes:
cells_started,cells_accepted,queens_emerged,queens_mated,queens_successfully_laying - Genetics:
mother_hive(genetic source),breeding_hive(operational workspace),drone_source,breed_line - Assessment:
quality_rating(configurable via System Configuration)
Property: success_rate -- Calculated as (cells_accepted / cells_started) * 100
Conceptual Separation:
- mother_hive (Hive): Production hive providing genetic material (larvae/eggs)
- breeding_hive (BreedingHive): Dedicated breeding workspace where queen rearing takes place
Key Methods:
get_status_display()-- Returns human-readable status label from System Configurationclean()-- Validates status transitions against allowed rulessave(skip_validation=False)-- Runs full validation before saving; passskip_validation=Truefor admin overrides
ColonySplit¶
Records colony splitting operations. Uses OrgPermissionMixin with split_by as the permission owner field.
Split Types: Configurable via System Configuration (split_type category)
Status Progression:
"Failed" and "Combined" are terminal states.
Key Fields:
parent_hive,new_hive-- Source and destination hivesframes_transferred,brood_frames,honey_frames-- Frame counts- Queen management:
queen_included,queen_cell_added,queen_introduced - Timeline:
queen_introduction_date,queen_accepted_date,first_eggs_seen - Activity tracking:
assigned_to,scheduled_date,completed_date,priority,cost is_successful-- Final outcome
Validation: Breeding hives cannot be used as parent_hive or new_hive in splits. This is enforced at both model level (clean()) and form level (ColonySplitForm.clean()).
BreedingStatusChange¶
Tracks historical changes to queen breeding status. Inherits from AbstractStatusChange and uses DelegatedPermissionMixin to delegate permissions to the parent breeding record.
Fields: breeding (FK to QueenBreeding), old_status, new_status, changed_at, changed_by, notes
SplitStatusChange¶
Tracks historical changes to colony split status. Inherits from AbstractStatusChange and uses DelegatedPermissionMixin to delegate permissions to the parent split record.
Fields: split (FK to ColonySplit), old_status, new_status, changed_at, changed_by, notes
Views¶
Queen Breeding¶
| View | Purpose |
|---|---|
| BreedingListView | List breedings with org/method/status/date filters and sortable columns |
| BreedingDetailView | Display breeding details with permission check |
| BreedingCreateView | Create breeding record, auto-sets organization and breeder |
| BreedingUpdateView | Update breeding record with permission check |
Colony Splits¶
| View | Purpose |
|---|---|
| SplitListView | List splits with org/type/status/success/date filters and sortable columns |
| SplitDetailView | Display split details with permission check |
| SplitCreateView | Create colony split record, auto-sets organization and split_by |
| SplitUpdateView | Update split record with permission check |
All list views use SortableListMixin for column sorting and support pagination (20 items per page).
Forms¶
QueenBreedingForm¶
Model form for creating and editing queen breeding records. Populates choice fields from System Configuration:
breeding_methodfrom breeding_method categorystatusfrom breeding_status categoryquality_ratingfrom breeding_quality category
Filters mother_hive and breeding_hive querysets to the user's organizations. Validates all choice values against System Configuration.
ColonySplitForm¶
Model form for creating and editing colony split records. Populates choice fields from System Configuration:
split_typefrom split_type categorystatusfrom split_status categorypriorityfrom operation_priority category
Filters parent_hive and new_hive querysets to the user's organizations. Prevents breeding hives from being used as the parent hive in splits.
BreedingListFilterForm¶
Filters: organization, breeding_method, status, start_date, end_date. Default date range is the last 365 days.
SplitListFilterForm¶
Filters: organization, split_type, status, is_successful, start_date, end_date. Default date range is the last 365 days.
URL Patterns¶
breeding/ → BreedingListView (breeding-list)
breeding/<int:pk>/ → BreedingDetailView (breeding-detail)
breeding/new/ → BreedingCreateView (breeding-create)
breeding/<int:pk>/edit/ → BreedingUpdateView (breeding-update)
breeding/splits/ → SplitListView (split-list)
breeding/split/<int:pk>/ → SplitDetailView (split-detail)
breeding/split/new/ → SplitCreateView (split-create)
breeding/split/<int:pk>/edit/ → SplitUpdateView (split-update)
Signals¶
The breeding app uses four signal handlers in signals_status.py to automatically track status changes:
| Signal | Trigger | Purpose |
|---|---|---|
| track_breeding_status_pre_save | QueenBreeding pre_save | Stores previous status for change detection |
| track_breeding_status_change | QueenBreeding post_save | Creates BreedingStatusChange audit record |
| track_split_status_pre_save | ColonySplit pre_save | Stores previous status for change detection |
| track_split_status_change | ColonySplit post_save | Creates SplitStatusChange audit record |
Signal handlers are loaded in apps.py when the app is ready.
Integration with Hives App¶
Queen Lineage¶
Queens created through breeding programs link back via breeding_record and mother_queen:
queen = Queen.objects.create(
hive=new_hive,
breeding_record=breeding, # Links to QueenBreeding
mother_queen=source_queen, # Links to mother for lineage
origin='bred_here',
)
Colony Splitting¶
Splits require creating the new hive first, then recording the split:
new_hive = Hive.objects.create(name="Split-1", organization=org)
split = ColonySplit.objects.create(
parent_hive=existing_hive,
new_hive=new_hive,
frames_transferred=5,
)
Breeding Hive Protection¶
Breeding hives (BreedingHive model) cannot be used in colony splits. This is validated at both model and form levels to prevent accidental splitting of dedicated breeding equipment.
System Configuration Categories¶
The breeding app uses the following configurable choice categories:
| Category Code | Used By | Purpose |
|---|---|---|
breeding_method |
QueenBreeding.breeding_method | Available breeding methods |
breeding_status |
QueenBreeding.status | Available breeding statuses |
breeding_quality |
QueenBreeding.quality_rating | Quality rating options |
split_type |
ColonySplit.split_type | Available split types |
split_status |
ColonySplit.status | Available split statuses |
operation_priority |
ColonySplit.priority | Priority levels |
See Also¶
- Database Models - Breeding
- User Guide - Breeding
- Hives App Reference - Queen model and lineage