Field Reference — Event Model
Overview
Complete reference for events.models.Event fields used in create/edit forms, module setup wizard, business logic, and API serialization—aligned with the current codebase.
Purpose
Single source of truth for field names, types, defaults, and behavioral notes for implementers and power organizers.
Who should use it
- Organizers configuring advanced settings
- Developers integrating with Event data
- Support diagnosing save validation errors
Benefits
- Maps form fields to database columns
- Documents module toggle → subscription mapping
- Explains JSON and FK fields
Navigation path
| Action |
Path |
| Create/edit event |
/events/create/, /events/<pk>/<tag>/edit/ |
| Django admin |
/admin/events/event/ |
| Setup wizard |
/events/create/<pk>/setup/<step>/ |
Prerequisites
Core identity & scheduling
| Field |
Type |
Default |
Description |
host |
FK User |
required |
Primary organizer |
client_viewers |
M2M User |
empty |
Read-only users: event page, registration counts, budget summary, vendors, schedule |
title |
CharField(200) |
— |
Public title |
registration_type |
choice |
registration |
rsvp or registration |
visibility |
choice |
private |
public or private |
event_category |
TextField |
'' |
Required if public |
description |
TextField |
— |
Long description |
location |
CharField(300) |
— |
Address or URL |
venue |
FK Venue |
null |
Linked venue profile |
latitude |
Decimal |
null |
Geocode |
longitude |
Decimal |
null |
Geocode |
start_date |
DateTime |
— |
Event start |
end_date |
DateTime |
— |
Event end |
capacity |
Integer |
100 |
Max headcount |
event_tag |
CharField(6) |
auto |
URL slug |
custom_hashtag |
CharField(80) |
blank |
Optional organizer tag for social kit (e.g. #SummerFest2026) |
social_sharing_assets |
JSONField |
{} |
Cached AI/template social captions & hashtags |
created_at |
DateTime |
auto |
Created timestamp |
| Field |
Type |
Default |
Description |
price |
Decimal(8,2) |
0.00 |
Legacy base price |
is_free |
Boolean |
False |
Free event |
ticket_types |
TextField |
blank |
Tier definitions |
allow_group_purchasing |
Boolean |
False |
Multi-seat checkout |
coupon_code |
CharField(50) |
blank |
Discount code |
coupon_discount_percent |
PositiveInt |
0 |
Percent off |
Communications toggles
| Field |
Type |
Default |
Plan tool key |
email_blasts_enabled |
Boolean |
True |
communications |
sms_reminders_enabled |
Boolean |
False |
communications |
Exhibitors (exhibitors — Enterprise)
| Field |
Type |
Default |
exhibitors_enabled |
Boolean |
False |
exhibitor_prospectus |
TextField |
blank |
exhibitor_approval_type |
choice |
organizer |
exhibitor_booth_fees |
JSONField |
10x10/10x20/20x20/custom USD |
exhibitor_floor_plan |
ImageField |
null |
exhibitor_cancellation_policy |
TextField |
blank |
exhibitor_offline_invoice_enabled |
Boolean |
True |
Vendors (vendors — Operations Suite)
| Field |
Type |
Default |
vendors_enabled |
Boolean |
False |
vendor_opportunities |
TextField |
blank |
vendor_prospectus |
TextField |
blank |
vendor_application_deadline |
Date |
null |
vendor_approval_type |
choice |
organizer |
vendor_stall_fees |
JSONField |
small→custom USD |
vendor_floor_plan |
ImageField |
null |
vendor_addon_fees |
JSONField |
power/water/equipment |
vendor_deposit_required |
Boolean |
False |
vendor_deposit_percent |
Decimal |
50 |
vendor_cancellation_policy |
TextField |
blank |
vendor_commission_default |
Decimal |
null |
vendor_require_verified_documents |
Boolean |
False |
vendor_offline_invoice_enabled |
Boolean |
True |
vendor_load_in_door |
CharField |
blank |
vendor_load_in_start |
Time |
null |
vendor_load_in_end |
Time |
null |
vendor_parking_info |
TextField |
blank |
Attendees (attendees — Essentials)
| Field |
Type |
Default |
attendees_enabled |
Boolean |
False |
attendee_registration_info |
TextField |
blank |
attendee_gdpr_enabled |
Boolean |
False |
attendee_data_retention_years |
choice |
2 |
| Field |
Type |
Default |
sponsors_enabled |
Boolean |
False |
sponsor_prospectus |
TextField |
blank |
sponsor_approval_type |
choice |
organizer |
sponsor_platform_fee_percent |
Decimal |
5.00 |
sponsor_pass_fees_to_sponsor |
Boolean |
True |
sponsor_ach_enabled |
Boolean |
True |
sponsor_ach_min_amount |
Decimal |
5000.00 |
sponsor_offline_invoice_enabled |
Boolean |
True |
Speakers (speakers — Presenter Pro)
| Field |
Type |
Default |
speakers_enabled |
Boolean |
False |
speaker_call_info |
TextField |
blank |
speaker_approval_type |
choice |
organizer |
speaker_application_deadline |
Date |
null |
speaker_slot_keynotes |
PositiveInt |
0 |
speaker_slot_panels |
PositiveInt |
0 |
speaker_slot_workshops |
PositiveInt |
0 |
speaker_slot_lightning |
PositiveInt |
0 |
speaker_fee_budget |
Decimal |
null |
speaker_topics_needed |
TextField |
blank |
speaker_check_in_location |
CharField |
blank |
Program (program — Essentials)
| Field |
Type |
Default |
program_enabled |
Boolean |
False |
Volunteers (volunteers — Operations Suite)
| Field |
Type |
Default |
volunteers_enabled |
Boolean |
False |
volunteer_prospectus |
TextField |
blank |
volunteer_approval_type |
choice |
organizer |
volunteer_application_deadline |
Date |
null |
volunteer_total_needed |
PositiveInt |
null |
volunteer_benefit_free_access |
Boolean |
True |
volunteer_benefit_meals |
Boolean |
False |
volunteer_benefit_tshirt |
Boolean |
True |
volunteer_benefit_certificate |
Boolean |
True |
volunteer_min_age |
PositiveInt |
16 |
volunteer_skills_required |
TextField |
blank |
volunteer_check_in_location |
CharField |
blank |
| Field |
Type |
Description |
cover_image |
ImageField |
Card image |
cover_image_banner |
ImageField |
Landscape banner |
cover_image_mobile |
ImageField |
Mobile variant |
cover_crop_data |
JSONField |
Crop metadata |
recurrence_series_id |
UUID |
Series link |
recurrence_parent |
FK self |
Parent event |
recurrence_index |
SmallInt |
0 = anchor |
recurrence_rule |
JSONField |
frequency, occurrences |
Computed properties & methods
| Name |
Returns |
is_rsvp_type |
registration_type == rsvp |
is_public |
visibility == public |
is_past |
end_date < now |
is_recurring |
bool series_id |
is_recurring_anchor |
index == 0 |
recurrence_summary() |
Human label |
series_members() |
QuerySet of series |
cover_image_for(variant) |
card/banner/mobile |
default_visibility_for_registration_type() |
classmethod |
Business rules
| Field group |
Rule |
| visibility + category |
Public requires category |
| Module toggles |
Locked per EVENT_FORM_FIELD_TOOL_KEYS |
| recurrence |
Clones on create when setup_recurrence |
| event_tag |
Auto uppercase on save |
Validation rules
end_date > start_date
- Public → non-empty category
- Wizard dropdown fields validated per step
User permissions
Only host/staff edit Event fields.
Workflow
See Events & Registration.
Examples
JSON exhibitor_booth_fees default:
{"10x10": "750.00", "10x20": "1200.00", "20x20": "2000.00", "custom": "0.00"}
Best practices
- Set venue FK before copying load-in defaults
- Enable modules before running wizard
- Document custom category tags for Discover filters
Tips
EVENT_SETUP_STEPS in events/forms.py maps wizard fields
- Cover crop JSON drives portrait vs banner layout
Common mistakes
| Field |
Mistake |
attendees_enabled |
Left off for ticketed conference |
visibility |
Public without category |
sms_reminders_enabled |
Expecting SMS without provider |
FAQs
Where are ticket tiers stored?
ticket_types text + payment flow; tier UI on edit form.
Troubleshooting
Admin → Event → verify field values when form save confusing.
Screenshot placeholders
[SCREENSHOT: Event edit form all sections expanded]
Administrator notes
Bulk update via Django admin or shell for migrations/fixes.
Developer/API notes
| Item |
Location |
| Model |
events/models.py class Event |
| Form locks |
EventForm._apply_subscription_plan_field_locks |
| Toggle map |
users/subscription_plans.EVENT_FORM_FIELD_TOOL_KEYS |
Mobile API exposes subset of fields on event detail endpoint.
See also: Glossary