* Vietnamese translation incomplete

Cruise models Explain

Cruise models Explain (English fallback)

Aug. 17, 2025

Posted by admin

Nhom

Notes

 

Cruise Models - Complete Field Analysis

πŸ“Š Model Architecture Overview

The cruise app contains 13 interconnected models that form a complete cruise booking and management system, designed to handle everything from cruise lines and ships to bookings and reviews

 

🏒 1. CruiseLine Model - Cruise Company Management

Purpose: Represents major cruise companies like Royal Caribbean, Norwegian Cruise Line, etc.

Field Analysis:

class CruiseLine(models.Model):

πŸ”§ Core Identity Fields:

  • name (CharField(100)):
    • Use: Primary English company name (e.g., "Royal Caribbean International")
    • Business Logic: Main brand identification for marketing and search
  • name_vi (CharField(100, blank=True)):
    • Use: Vietnamese translation of company name
    • Business Logic: Localization for Vietnamese market
  • code (CharField(10, unique=True)):
    • Use: Short identifier code (e.g., "RCL", "NCL", "MSC")
    • Business Logic: Database efficiency, API integration, internal referencing
    • Constraint: Must be unique across all cruise lines

πŸ“ Content Fields:

  • description (TextField(blank=True)):
    • Use: Detailed English description of cruise line's history, fleet, specialties
    • Business Logic: Marketing content, SEO optimization, customer education
  • description_vi (TextField(blank=True)):
    • Use: Vietnamese version of company description
    • Business Logic: Market localization for Vietnamese customers

🎨 Media Fields:

  • logo (ImageField(upload_to='cruise_lines/')):
    • Use: Company logo for branding consistency
    • Business Logic: Visual brand recognition, website aesthetics

🌐 Contact Fields:

  • website (URLField(blank=True)):
    • Use: Official cruise line website URL
    • Business Logic: Direct customer referrals, partnership verification

⭐ Quality Fields:

  • star_rating (DecimalField(2,1), default=3.0):
    • Use: Overall cruise line quality rating (1.0-5.0)
    • Business Logic: Customer decision-making, filtering, ranking
    • Range: 1.0 (budget) to 5.0 (ultra-luxury)

πŸ”„ Status Fields:

  • is_active (BooleanField(default=True)):
    • Use: Controls visibility and availability
    • Business Logic: Temporary disable without deletion, seasonal operations

πŸ”— Relationship Fields:

  • provider (ForeignKey(Provider)):
    • Use: Links to service provider for commission tracking
    • Business Logic: Revenue sharing, booking attribution, business partnerships

πŸ“… Audit Fields:

  • created_at (DateTimeField(auto_now_add=True)):
  • updated_at (DateTimeField(auto_now=True)):
    • Use: Data lifecycle tracking, audit trails

πŸ”’ Computed Properties:

  • ship_count (Property):
    • Calculation: self.ships.filter(is_active=True).count()
    • Use: Dashboard statistics, marketing materials

🎯 Business Use Cases:

  1. Cruise Line Comparison: Star ratings and descriptions help customers choose
  2. Partnership Management: Provider relationship enables commission tracking
  3. Inventory Management: Active status controls which lines appear in searches
  4. Branding: Logo and consistent naming across platforms

 

 

πŸ›³οΈ 2. Ship Model - Individual Vessel Management

Purpose: Represents specific cruise ships with detailed specifications and capabilities.

Field Analysis:

🏷️ Identity Fields:

  • name (CharField(100)):
    • Use: Ship name (e.g., "Symphony of the Seas", "Norwegian Breakaway")
    • Business Logic: Primary identification, booking references
  • name_vi (CharField(100, blank=True)):
    • Use: Vietnamese ship name if different
    • Business Logic: Local market adaptation

πŸ”— Relationship Fields:

  • cruise_line (ForeignKey(CruiseLine)):
    • Use: Links ship to parent cruise company
    • Business Logic: Fleet organization, brand consistency

🏷️ Classification Fields:

  • category (CharField(20, choices=SHIP_CATEGORIES)):
    • Options: luxury, premium, contemporary, budget, expedition, river
    • Use: Market segmentation, price positioning
    • Business Logic: Customer expectations, filtering, marketing positioning

πŸ“… Temporal Fields:

  • year_built (PositiveIntegerField):
    • Use: Construction year for age assessment
    • Business Logic: Ship condition expectations, modern amenities assessment
  • year_refurbished (PositiveIntegerField(null=True, blank=True)):
    • Use: Last major renovation year
    • Business Logic: Facility freshness, competitive positioning

πŸ‘₯ Capacity Fields:

  • capacity (PositiveIntegerField):
    • Use: Maximum passenger capacity
    • Business Logic: Inventory planning, cabin allocation, revenue calculations
  • crew_size (PositiveIntegerField):
    • Use: Number of crew members
    • Business Logic: Service level indicator, operational costs

βš“ Physical Specifications:

  • gross_tonnage (PositiveIntegerField):
    • Use: Ship size measurement
    • Business Logic: Port compatibility, engineering specifications
  • length (DecimalField(6,2)):
    • Use: Ship length in meters
    • Business Logic: Port docking capabilities, canal transit
  • beam (DecimalField(5,2)):
    • Use: Ship width in meters
    • Business Logic: Port compatibility, stability assessments
  • decks (PositiveIntegerField):
    • Use: Number of passenger decks
    • Business Logic: Cabin distribution, facility organization

πŸ“ Content Fields:

  • description/description_vi (TextField):
    • Use: Detailed ship information, amenities, unique features
    • Business Logic: Marketing content, customer education

πŸ–ΌοΈ Media Fields:

  • main_image (ImageField(upload_to='ships/')):
    • Use: Primary ship photograph
    • Business Logic: Visual appeal, marketing materials

πŸ“Š Computed Properties:

  • passenger_to_crew_ratio (Property):
    • Calculation: capacity / crew_size
    • Use: Service level indicator (lower ratio = better service)
    • Business Logic: Quality assessment, customer expectations

🎯 Business Applications:

  1. Capacity Planning: Passenger capacity drives pricing and availability
  2. Service Quality: Crew ratio indicates service levels
  3. Port Compatibility: Physical dimensions determine itinerary possibilities
  4. Market Positioning: Category and year built influence pricing strategy

 

 

🎭 3. ShipAmenity Model - Facility Management

Purpose: Manages ship facilities and features with categorization for easy filtering.

Field Analysis:

🏷️ Identity Fields:

  • name/name_vi (CharField(100)):
    • Use: Amenity name (e.g., "Main Dining Room", "Rock Climbing Wall")
    • Business Logic: Feature identification, marketing descriptions

🏷️ Classification Fields:

  • category (CharField(20, choices=AMENITY_CATEGORIES)):
    • Categories: dining, entertainment, activities, spa, sports, kids, shopping, accessibility
    • Use: Organized feature presentation, filtering capabilities
    • Business Logic: Customer interest targeting, feature comparison

πŸ“ Content Fields:

  • description/description_vi (TextField):
    • Use: Detailed amenity information, operating hours, special features
    • Business Logic: Customer education, expectation setting

πŸ–ΌοΈ Visual Fields:

  • icon (ImageField(upload_to='amenities/')):
    • Use: Visual representation for quick recognition
    • Business Logic: UI enhancement, quick feature identification

πŸ”— Relationship Fields:

  • ships (ManyToManyField(Ship)):
    • Use: Which ships have this amenity
    • Business Logic: Feature-based ship filtering, comparison tools

🎯 Business Applications:

  1. Feature Comparison: Customers can compare ships by amenities
  2. Targeted Marketing: Category-based promotion (families → kids amenities)
  3. Accessibility Compliance: Dedicated accessibility category
  4. Service Differentiation: Premium ships showcase luxury amenities

 

 

πŸ›οΈ 4. CabinCategory Model - Accommodation Types

Purpose: Defines different cabin types available on ships with pricing and specifications.

Field Analysis:

πŸ”— Ship Association:

  • ship (ForeignKey(Ship)):
    • Use: Links cabin types to specific ships
    • Business Logic: Ship-specific accommodation options

🏷️ Cabin Classification:

  • cabin_type (CharField(15, choices=CABIN_TYPES)):
    • Types: interior, ocean_view, balcony, suite
    • Use: Price tier identification, customer preference matching
    • Business Logic: Revenue optimization, market segmentation

πŸ“ Physical Specifications:

  • size_sqft (PositiveIntegerField):
    • Use: Cabin size in square feet
    • Business Logic: Value assessment, space requirements
  • max_occupancy (PositiveIntegerField(default=2)):
    • Use: Maximum guests per cabin
    • Business Logic: Family accommodation, pricing calculations

🏒 Location Information:

  • deck_location (CharField(100)):
    • Use: Which decks contain this cabin category
    • Business Logic: Customer preference (high/low deck), elevator access

πŸ“ Amenity Information:

  • amenities/amenities_vi (TextField):
    • Use: List of in-cabin features
    • Business Logic: Value proposition, customer expectations

πŸ–ΌοΈ Visual Representation:

  • image (ImageField(upload_to='cabins/')):
    • Use: Cabin interior photos
    • Business Logic: Customer decision-making, expectation setting

🎯 Pricing Strategy Applications:

  1. Revenue Optimization: Different cabin types enable price discrimination
  2. Inventory Management: Track availability by cabin category
  3. Customer Matching: Match preferences to appropriate cabin types

Upselling: Higher categories generate more revenue

 

 

πŸ—ΊοΈ 5. CruiseItinerary Model - Route Planning

Purpose: Defines cruise routes, destinations, and journey specifications.

Field Analysis:

🏷️ Journey Identity:

  • name/name_vi (CharField(200)):
    • Use: Itinerary name (e.g., "Eastern Caribbean Adventure")
    • Business Logic: Marketing appeal, search optimization

⏱️ Duration Specification:

  • duration_days (PositiveIntegerField):
    • Use: Total cruise length in days
    • Business Logic: Vacation planning, pricing basis, calendar planning

πŸ”„ Journey Type:

  • itinerary_type (CharField(15, choices=ITINERARY_TYPES)):
    • Types: round_trip, one_way, open_jaw
    • Use: Journey logistics, customer preference matching
    • Business Logic:
      • round_trip: Most popular, return to same port
      • one_way: Repositioning cruises, different start/end
      • open_jaw: Complex routing, specialized markets

🏒 Port Management:

  • departure_port (ForeignKey(Location)):
    • Use: Starting port for cruise
    • Business Logic: Customer convenience, logistics planning
  • arrival_port (ForeignKey(Location)):
    • Use: Ending port (may equal departure for round trips)
    • Business Logic: Travel planning, transportation coordination

πŸ“ Marketing Content:

  • highlights/highlights_vi (TextField):
    • Use: Key selling points of itinerary
    • Business Logic: Marketing copy, customer excitement building

πŸ“Š Computed Properties:

  • port_count (Property):
    • Calculation: Count of ports in itinerary
    • Use: Value assessment (more ports = more destinations)

🎯 Business Applications:

  1. Route Planning: Optimize for customer appeal and operational efficiency
  2. Seasonal Adjustments: Different itineraries for different seasons
  3. Market Segmentation: Various durations appeal to different customer segments
  4. Operational Efficiency: Balance fuel costs with customer satisfaction

 

 

βš“ 6. ItineraryPort Model - Daily Schedule Management

Purpose: Manages day-by-day port visits within cruise itineraries.

Field Analysis:

πŸ”— Relationship Management:

  • itinerary (ForeignKey(CruiseItinerary)):
    • Use: Links port visit to specific itinerary
    • Business Logic: Journey organization, sequential planning
  • port (ForeignKey(Location)):
    • Use: Specific port being visited
    • Business Logic: Destination information, shore excursion planning

πŸ“… Schedule Fields:

  • day_number (PositiveIntegerField):
    • Use: Day of cruise (1, 2, 3, etc.)
    • Business Logic: Sequential organization, customer planning
    • Constraint: Unique per itinerary (can't have duplicate days)
  • arrival_time (TimeField(null=True)):
    • Use: When ship arrives at port
    • Business Logic: Shore excursion planning, customer scheduling
  • departure_time (TimeField(null=True)):
    • Use: When ship leaves port
    • Business Logic: Excursion duration limits, customer planning

🌊 Special Day Types:

  • is_sea_day (BooleanField(default=False)):
    • Use: Indicates days at sea with no port visits
    • Business Logic:
      • Relaxation time
      • Onboard activity focus
      • Ship amenity utilization
      • Transit between distant ports

πŸ“ Additional Information:

  • notes/notes_vi (TextField):
    • Use: Special information about port visit
    • Business Logic:
      • Tender ports (ship anchors offshore)
      • Weather considerations
      • Special events at port
      • Visa requirements

🎯 Operational Applications:

  1. Customer Planning: Daily schedules help passengers plan activities
  2. Shore Excursion Coordination: Timing determines available tours
  3. Fuel Management: Sea days vs. port days affect operational costs
  4. Customer Satisfaction: Balance of port time vs. sea time

 

 

🚒 7. Cruise Model - Specific Departure Management

Purpose: Represents specific cruise departures with pricing, deals, and availability.

Field Analysis:

πŸ”— Core Relationships:

  • ship (ForeignKey(Ship)):
    • Use: Which ship operates this cruise
    • Business Logic: Capacity, amenities, service level determination
  • itinerary (ForeignKey(CruiseItinerary)):
    • Use: Route and destinations for this cruise
    • Business Logic: Experience definition, marketing appeal

πŸ“… Temporal Management:

  • departure_date (DateField):
    • Use: When cruise begins
    • Business Logic: Inventory management, customer planning, seasonality
  • return_date (DateField):
    • Use: When cruise ends
    • Business Logic: Duration calculation, planning coordination

πŸ“Š Status Management:

  • status (CharField(15, choices=STATUS_CHOICES)):
    • Options: active, sold_out, cancelled, completed
    • Use: Availability control, booking eligibility
    • Business Logic:
      • active: Available for booking
      • sold_out: No cabins available
      • cancelled: Operational cancellation
      • completed: Historical record

πŸ’° Deal Management System:

  • is_deal (BooleanField(default=False)):
    • Use: Flags special pricing offers
    • Business Logic: Marketing promotion, revenue optimization
  • deal_type (CharField(15, choices=DEAL_TYPES)):
    • Types: early_bird, last_minute, group, senior, military, repeat, two_for_one
    • Use: Targeted customer segments
    • Business Logic:
      • early_bird: Book far in advance
      • last_minute: Fill inventory quickly
      • group: Volume discounts
      • senior/military: Demographic targeting
      • repeat: Customer loyalty
      • two_for_one: Aggressive promotion
  • deal_discount_percent (DecimalField(5,2)):
    • Use: Percentage discount amount
    • Business Logic: Pricing calculation, margin management
  • deal_expires (DateTimeField(null=True)):
    • Use: Deal expiration deadline
    • Business Logic: Urgency creation, inventory management

🎁 Included Services:

  • airfare_included (BooleanField):
  • shore_excursions_included (BooleanField):
  • wifi_included (BooleanField):
  • drinks_package_included (BooleanField):
  • gratuities_included (BooleanField):
    • Use: Package value propositions
    • Business Logic: Competitive differentiation, all-inclusive pricing

πŸ“Š Computed Properties:

  • days_until_departure (Property):
    • Calculation: Days from today to departure
    • Use: Urgency indicators, last-minute deal eligibility
  • is_last_minute (Property):
    • Logic: True if departure ≤ 90 days
    • Use: Special pricing triggers, marketing campaigns

🎯 Revenue Management Applications:

  1. Dynamic Pricing: Deals and discounts optimize revenue
  2. Inventory Control: Status management prevents overbooking
  3. Market Segmentation: Different deal types target different customers
  4. Package Optimization: Included services create value perception

 

 

πŸ’° 8. CruisePrice Model - Revenue Management

Purpose: Manages pricing for different cabin categories with complex pricing structures.

Field Analysis:

πŸ”— Pricing Relationships:

  • cruise (ForeignKey(Cruise)):
  • cabin_category (ForeignKey(CabinCategory)):
    • Use: Links specific pricing to cruise and cabin type
    • Business Logic: Dynamic pricing by cabin quality and cruise demand
    • Constraint: Unique combination prevents duplicate pricing

πŸ’΅ Base Pricing Structure:

  • price_per_person (DecimalField(10,2)):
    • Use: Standard per-person rate for double occupancy
    • Business Logic: Primary pricing metric, revenue calculation
  • single_supplement (DecimalField(10,2)):
    • Use: Additional fee for solo travelers
    • Business Logic: Compensates for lost double occupancy revenue

πŸ‘¨‍πŸ‘©‍πŸ‘§‍πŸ‘¦ Family Pricing:

  • third_guest_price (DecimalField(10,2, null=True)):
  • fourth_guest_price (DecimalField(10,2, null=True)):
    • Use: Reduced rates for additional guests in same cabin
    • Business Logic: Family market targeting, cabin space optimization

🏒 Inventory Management:

  • total_cabins (PositiveIntegerField(default=0)):
    • Use: Total cabins available in this category
    • Business Logic: Inventory planning, ship capacity allocation
  • available_cabins (PositiveIntegerField(default=0)):
    • Use: Currently available cabins for booking
    • Business Logic: Real-time availability, revenue optimization

πŸ’Ό Fee Structure:

  • port_charges (DecimalField(8,2)):
    • Use: Mandatory port fees (not cruise line revenue)
    • Business Logic: Transparent pricing, regulatory compliance
  • government_fees (DecimalField(8,2)):
    • Use: Government taxes and fees
    • Business Logic: Regulatory compliance, transparent pricing

πŸ“Š Computed Properties:

  • total_price_per_person (Property):
    • Calculation: Base price + port charges + government fees
    • Use: Complete cost transparency
  • discounted_price (Property):
    • Calculation: Applies cruise deal discounts
    • Use: Promotional pricing display
  • savings_amount (Property):
    • Calculation: Original price - discounted price
    • Use: Deal value communication
  • is_available (Property):
    • Logic: available_cabins > 0
    • Use: Booking eligibility, search filtering

🎯 Revenue Optimization Applications:

  1. Dynamic Pricing: Adjust prices based on demand and availability
  2. Yield Management: Optimize revenue per cabin
  3. Competitive Positioning: Price comparison with other cruise lines
  4. Family Marketing: Special family rates attract multi-guest bookings

 

 

πŸ“· 9. CruiseImage Model - Visual Content Management

Purpose: Manages images for cruises and ships with categorization and ordering.

Field Analysis:

πŸ”— Content Relationships:

  • cruise (ForeignKey(Cruise, null=True, blank=True)):
  • ship (ForeignKey(Ship, null=True, blank=True)):
    • Use: Flexible image association with either cruises or ships
    • Business Logic: Shared image library, content reuse

πŸ–ΌοΈ Image Management:

  • image (ImageField(upload_to='cruise_images/')):
    • Use: Actual image file storage
    • Business Logic: Visual marketing, customer attraction

🏷️ Content Categorization:

  • image_type (CharField(20, choices=IMAGE_TYPES)):
    • Types: ship_exterior, ship_interior, cabin, dining, entertainment, destination, amenity
    • Use: Organized image galleries, targeted display
    • Business Logic:
      • ship_exterior: Ship beauty, size impression
      • cabin: Accommodation quality
      • dining: Food quality, restaurant ambiance
      • entertainment: Activity options
      • destination: Port appeal

πŸ“ Content Description:

  • caption/caption_vi (CharField(200)):
    • Use: Image descriptions and context
    • Business Logic: SEO optimization, accessibility, context

⭐ Presentation Control:

  • is_featured (BooleanField(default=False)):
    • Use: Highlights best images for primary display
    • Business Logic: Marketing impact, first impression management
  • order (PositiveIntegerField(default=0)):
    • Use: Controls image sequence in galleries
    • Business Logic: Narrative flow, impact optimization

🎯 Marketing Applications:

  1. Visual Storytelling: Organized image types tell complete cruise story
  2. First Impressions: Featured images create immediate appeal
  3. Expectation Setting: Accurate representation builds trust
  4. SEO Optimization: Proper captions improve search visibility

 

 

⭐ 10. CruiseReview Model - Customer Feedback System

Purpose: Comprehensive customer review system with multiple rating dimensions.

Field Analysis:

πŸ”— Review Relationships:

  • cruise (ForeignKey(Cruise)):
  • user (ForeignKey(User)):
    • Use: Links reviews to specific cruises and users
    • Business Logic: Authentic feedback, prevents duplicate reviews
    • Constraint: One review per user per cruise

⭐ Multi-Dimensional Rating System:

  • overall_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: General satisfaction score (1-5)
    • Business Logic: Primary ranking metric, quick assessment
  • ship_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Ship condition, cleanliness, layout satisfaction
    • Business Logic: Ship maintenance feedback, facility quality
  • service_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Staff service quality
    • Business Logic: Training needs identification, service excellence
  • dining_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Food quality and dining experience
    • Business Logic: Culinary program feedback, chef performance
  • entertainment_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Shows, activities, entertainment quality
    • Business Logic: Entertainment program evaluation, guest satisfaction
  • value_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Price-to-value perception
    • Business Logic: Pricing strategy validation, competitive positioning

πŸ“ Detailed Feedback:

  • title (CharField(200)):
    • Use: Review headline for quick scanning
    • Business Logic: Attention grabbing, summary sentiment
  • review_text (TextField):
    • Use: Detailed review content
    • Business Logic: Comprehensive feedback, specific improvement areas
  • pros (TextField(blank=True)):
  • cons (TextField(blank=True)):
    • Use: Structured positive and negative feedback
    • Business Logic: Balanced perspective, specific improvement identification

🧳 Travel Context:

  • travel_date (DateField):
    • Use: When customer took the cruise
    • Business Logic: Review recency, seasonal feedback patterns
  • cabin_category (ForeignKey(CabinCategory)):
    • Use: Which cabin type reviewer experienced
    • Business Logic: Cabin-specific feedback, pricing validation
  • traveler_type (CharField(50)):
    • Use: Travel context (Couple, Family, Solo, Group)
    • Business Logic: Market segment feedback, targeted improvements

πŸ” Quality Assurance:

  • is_verified (BooleanField(default=False)):
    • Use: Confirms reviewer actually took the cruise
    • Business Logic: Review authenticity, trust building
  • helpful_votes (PositiveIntegerField(default=0)):
    • Use: Community validation of review usefulness
    • Business Logic: Review ranking, quality indication

🎯 Business Intelligence Applications:

  1. Service Improvement: Multi-dimensional ratings identify specific improvement areas
  2. Quality Control: Verified reviews ensure authentic feedback
  3. Market Research: Traveler type analysis reveals segment preferences

Competitive Analysis: Value ratings indicate pricing competitiveness

 

 

❀️ 11. CruiseWishlist Model - Customer Interest Tracking

Purpose: Tracks customer interest in specific cruises for marketing and inventory management.

Field Analysis:

πŸ”— Interest Relationships:

  • user (ForeignKey(User)):
  • cruise (ForeignKey(Cruise)):
    • Use: Links customer interest to specific cruises
    • Business Logic: Personalized marketing, demand forecasting
    • Constraint: Prevents duplicate wishlist entries

πŸ“… Timing Information:

  • created_at (DateTimeField(auto_now_add=True)):
    • Use: When customer added cruise to wishlist
    • Business Logic: Interest timing, priority indication

🎯 Marketing Applications:

  1. Targeted Promotions: Market deals to interested customers first
  2. Demand Forecasting: High wishlist counts indicate popular cruises
  3. Inventory Alerts: Notify customers when wishlisted cruises have deals
  4. Customer Retention: Personalized recommendations based on interests

 

 

πŸ“‹ 12. CruiseBooking Model - Transaction Management

Purpose: Complete booking management system with payment tracking and commission calculation.

Field Analysis:

πŸ”— Booking Relationships:

  • user (ForeignKey(User)):
  • cruise (ForeignKey(Cruise)):
  • cabin_category (ForeignKey(CabinCategory)):
    • Use: Complete booking specification
    • Business Logic: Customer assignment, inventory allocation, service delivery

🏷️ Booking Identity:

  • booking_number (CharField(20, unique=True)):
    • Use: Unique booking identifier (auto-generated: "CR" + 8 random chars)
    • Business Logic: Customer service reference, payment tracking, confirmation

πŸ‘₯ Guest Management:

  • primary_guest_name (CharField(200)):
  • primary_guest_email (EmailField):
  • primary_guest_phone (CharField(20)):
    • Use: Primary contact for booking communications
    • Business Logic: Customer service, emergency contact, marketing
  • number_of_guests (PositiveIntegerField(default=2)):
    • Use: Total guests in booking
    • Business Logic: Cabin assignment, pricing calculation, safety compliance
  • special_requests (TextField(blank=True)):
    • Use: Dietary restrictions, accessibility needs, celebrations
    • Business Logic: Service customization, guest satisfaction

πŸ’° Financial Management:

  • base_price (DecimalField(10,2)):
    • Use: Cruise fare before taxes and fees
    • Business Logic: Revenue calculation, pricing transparency
  • taxes_and_fees (DecimalField(10,2)):
    • Use: Government and port charges
    • Business Logic: Cost transparency, regulatory compliance
  • total_price (DecimalField(10,2)):
    • Use: Complete booking cost
    • Business Logic: Payment processing, customer billing
  • commission_rate (DecimalField(5,2, default=10)):
  • commission_amount (DecimalField(10,2)):
    • Use: Partner commission tracking
    • Business Logic: Revenue sharing, partner compensation

πŸ“Š Status Tracking:

  • status (CharField(15, choices=STATUS_CHOICES)):
    • Options: pending, confirmed, cancelled, completed
    • Use: Booking lifecycle management
    • Business Logic:
      • pending: Awaiting payment or confirmation
      • confirmed: Active booking, cabin assigned
      • cancelled: Booking terminated, cabin released
      • completed: Cruise finished, final status

πŸ’³ Payment Management:

  • deposit_amount (DecimalField(10,2)):
  • deposit_paid (BooleanField(default=False)):
    • Use: Initial payment tracking
    • Business Logic: Booking security, cash flow management
  • final_payment_due (DateField(null=True)):
  • final_payment_made (BooleanField(default=False)):
    • Use: Balance payment tracking
    • Business Logic: Payment deadlines, booking confirmation

πŸ“… Date Tracking:

  • booking_date (DateTimeField(auto_now_add=True)):
  • confirmation_date (DateTimeField(null=True)):
  • cancellation_date (DateTimeField(null=True)):
    • Use: Booking lifecycle timestamps
    • Business Logic: SLA tracking, customer service, reporting

 

 

🎯 Business Operations Applications:

  1. Revenue Management: Track booking values and commission payments
  2. Customer Service: Complete booking history and contact information
  3. Inventory Control: Cabin allocation and availability management
  4. Payment Processing: Deposit and final payment workflow management
  5. Reporting: Financial reporting and partner commission calculations

 

 

πŸ”„ Model Relationships Summary

Primary Hierarchies:

  1. CruiseLine → Ship → CabinCategory → CruisePrice
  2. CruiseItinerary → ItineraryPort → Cruise → CruiseBooking
  3. Ship → ShipAmenity (Many-to-Many)
  4. Cruise → CruiseReviewCruiseWishlistCruiseImage

Key Business Flows:

  1. Content Creation: CruiseLine → Ship → Amenities → CabinCategories
  2. Route Planning: CruiseItinerary → ItineraryPort scheduling
  3. Inventory Management: Cruise → CruisePrice → availability tracking
  4. Customer Journey: Search → Wishlist → Booking → Review
  5. Revenue Tracking: Booking → commission calculation → provider payment

This comprehensive model structure enables a full-featured cruise booking platform with sophisticated inventory management, dynamic pricing, customer relationship management, and business intelligence capabilities

Vietnamese translation is not available for this article. Showing English content:

Nhom

Notes

 

Cruise Models - Complete Field Analysis

πŸ“Š Model Architecture Overview

The cruise app contains 13 interconnected models that form a complete cruise booking and management system, designed to handle everything from cruise lines and ships to bookings and reviews

 

🏒 1. CruiseLine Model - Cruise Company Management

Purpose: Represents major cruise companies like Royal Caribbean, Norwegian Cruise Line, etc.

Field Analysis:

class CruiseLine(models.Model):

πŸ”§ Core Identity Fields:

  • name (CharField(100)):
    • Use: Primary English company name (e.g., "Royal Caribbean International")
    • Business Logic: Main brand identification for marketing and search
  • name_vi (CharField(100, blank=True)):
    • Use: Vietnamese translation of company name
    • Business Logic: Localization for Vietnamese market
  • code (CharField(10, unique=True)):
    • Use: Short identifier code (e.g., "RCL", "NCL", "MSC")
    • Business Logic: Database efficiency, API integration, internal referencing
    • Constraint: Must be unique across all cruise lines

πŸ“ Content Fields:

  • description (TextField(blank=True)):
    • Use: Detailed English description of cruise line's history, fleet, specialties
    • Business Logic: Marketing content, SEO optimization, customer education
  • description_vi (TextField(blank=True)):
    • Use: Vietnamese version of company description
    • Business Logic: Market localization for Vietnamese customers

🎨 Media Fields:

  • logo (ImageField(upload_to='cruise_lines/')):
    • Use: Company logo for branding consistency
    • Business Logic: Visual brand recognition, website aesthetics

🌐 Contact Fields:

  • website (URLField(blank=True)):
    • Use: Official cruise line website URL
    • Business Logic: Direct customer referrals, partnership verification

⭐ Quality Fields:

  • star_rating (DecimalField(2,1), default=3.0):
    • Use: Overall cruise line quality rating (1.0-5.0)
    • Business Logic: Customer decision-making, filtering, ranking
    • Range: 1.0 (budget) to 5.0 (ultra-luxury)

πŸ”„ Status Fields:

  • is_active (BooleanField(default=True)):
    • Use: Controls visibility and availability
    • Business Logic: Temporary disable without deletion, seasonal operations

πŸ”— Relationship Fields:

  • provider (ForeignKey(Provider)):
    • Use: Links to service provider for commission tracking
    • Business Logic: Revenue sharing, booking attribution, business partnerships

πŸ“… Audit Fields:

  • created_at (DateTimeField(auto_now_add=True)):
  • updated_at (DateTimeField(auto_now=True)):
    • Use: Data lifecycle tracking, audit trails

πŸ”’ Computed Properties:

  • ship_count (Property):
    • Calculation: self.ships.filter(is_active=True).count()
    • Use: Dashboard statistics, marketing materials

🎯 Business Use Cases:

  1. Cruise Line Comparison: Star ratings and descriptions help customers choose
  2. Partnership Management: Provider relationship enables commission tracking
  3. Inventory Management: Active status controls which lines appear in searches
  4. Branding: Logo and consistent naming across platforms

 

 

πŸ›³οΈ 2. Ship Model - Individual Vessel Management

Purpose: Represents specific cruise ships with detailed specifications and capabilities.

Field Analysis:

🏷️ Identity Fields:

  • name (CharField(100)):
    • Use: Ship name (e.g., "Symphony of the Seas", "Norwegian Breakaway")
    • Business Logic: Primary identification, booking references
  • name_vi (CharField(100, blank=True)):
    • Use: Vietnamese ship name if different
    • Business Logic: Local market adaptation

πŸ”— Relationship Fields:

  • cruise_line (ForeignKey(CruiseLine)):
    • Use: Links ship to parent cruise company
    • Business Logic: Fleet organization, brand consistency

🏷️ Classification Fields:

  • category (CharField(20, choices=SHIP_CATEGORIES)):
    • Options: luxury, premium, contemporary, budget, expedition, river
    • Use: Market segmentation, price positioning
    • Business Logic: Customer expectations, filtering, marketing positioning

πŸ“… Temporal Fields:

  • year_built (PositiveIntegerField):
    • Use: Construction year for age assessment
    • Business Logic: Ship condition expectations, modern amenities assessment
  • year_refurbished (PositiveIntegerField(null=True, blank=True)):
    • Use: Last major renovation year
    • Business Logic: Facility freshness, competitive positioning

πŸ‘₯ Capacity Fields:

  • capacity (PositiveIntegerField):
    • Use: Maximum passenger capacity
    • Business Logic: Inventory planning, cabin allocation, revenue calculations
  • crew_size (PositiveIntegerField):
    • Use: Number of crew members
    • Business Logic: Service level indicator, operational costs

βš“ Physical Specifications:

  • gross_tonnage (PositiveIntegerField):
    • Use: Ship size measurement
    • Business Logic: Port compatibility, engineering specifications
  • length (DecimalField(6,2)):
    • Use: Ship length in meters
    • Business Logic: Port docking capabilities, canal transit
  • beam (DecimalField(5,2)):
    • Use: Ship width in meters
    • Business Logic: Port compatibility, stability assessments
  • decks (PositiveIntegerField):
    • Use: Number of passenger decks
    • Business Logic: Cabin distribution, facility organization

πŸ“ Content Fields:

  • description/description_vi (TextField):
    • Use: Detailed ship information, amenities, unique features
    • Business Logic: Marketing content, customer education

πŸ–ΌοΈ Media Fields:

  • main_image (ImageField(upload_to='ships/')):
    • Use: Primary ship photograph
    • Business Logic: Visual appeal, marketing materials

πŸ“Š Computed Properties:

  • passenger_to_crew_ratio (Property):
    • Calculation: capacity / crew_size
    • Use: Service level indicator (lower ratio = better service)
    • Business Logic: Quality assessment, customer expectations

🎯 Business Applications:

  1. Capacity Planning: Passenger capacity drives pricing and availability
  2. Service Quality: Crew ratio indicates service levels
  3. Port Compatibility: Physical dimensions determine itinerary possibilities
  4. Market Positioning: Category and year built influence pricing strategy

 

 

🎭 3. ShipAmenity Model - Facility Management

Purpose: Manages ship facilities and features with categorization for easy filtering.

Field Analysis:

🏷️ Identity Fields:

  • name/name_vi (CharField(100)):
    • Use: Amenity name (e.g., "Main Dining Room", "Rock Climbing Wall")
    • Business Logic: Feature identification, marketing descriptions

🏷️ Classification Fields:

  • category (CharField(20, choices=AMENITY_CATEGORIES)):
    • Categories: dining, entertainment, activities, spa, sports, kids, shopping, accessibility
    • Use: Organized feature presentation, filtering capabilities
    • Business Logic: Customer interest targeting, feature comparison

πŸ“ Content Fields:

  • description/description_vi (TextField):
    • Use: Detailed amenity information, operating hours, special features
    • Business Logic: Customer education, expectation setting

πŸ–ΌοΈ Visual Fields:

  • icon (ImageField(upload_to='amenities/')):
    • Use: Visual representation for quick recognition
    • Business Logic: UI enhancement, quick feature identification

πŸ”— Relationship Fields:

  • ships (ManyToManyField(Ship)):
    • Use: Which ships have this amenity
    • Business Logic: Feature-based ship filtering, comparison tools

🎯 Business Applications:

  1. Feature Comparison: Customers can compare ships by amenities
  2. Targeted Marketing: Category-based promotion (families → kids amenities)
  3. Accessibility Compliance: Dedicated accessibility category
  4. Service Differentiation: Premium ships showcase luxury amenities

 

 

πŸ›οΈ 4. CabinCategory Model - Accommodation Types

Purpose: Defines different cabin types available on ships with pricing and specifications.

Field Analysis:

πŸ”— Ship Association:

  • ship (ForeignKey(Ship)):
    • Use: Links cabin types to specific ships
    • Business Logic: Ship-specific accommodation options

🏷️ Cabin Classification:

  • cabin_type (CharField(15, choices=CABIN_TYPES)):
    • Types: interior, ocean_view, balcony, suite
    • Use: Price tier identification, customer preference matching
    • Business Logic: Revenue optimization, market segmentation

πŸ“ Physical Specifications:

  • size_sqft (PositiveIntegerField):
    • Use: Cabin size in square feet
    • Business Logic: Value assessment, space requirements
  • max_occupancy (PositiveIntegerField(default=2)):
    • Use: Maximum guests per cabin
    • Business Logic: Family accommodation, pricing calculations

🏒 Location Information:

  • deck_location (CharField(100)):
    • Use: Which decks contain this cabin category
    • Business Logic: Customer preference (high/low deck), elevator access

πŸ“ Amenity Information:

  • amenities/amenities_vi (TextField):
    • Use: List of in-cabin features
    • Business Logic: Value proposition, customer expectations

πŸ–ΌοΈ Visual Representation:

  • image (ImageField(upload_to='cabins/')):
    • Use: Cabin interior photos
    • Business Logic: Customer decision-making, expectation setting

🎯 Pricing Strategy Applications:

  1. Revenue Optimization: Different cabin types enable price discrimination
  2. Inventory Management: Track availability by cabin category
  3. Customer Matching: Match preferences to appropriate cabin types

Upselling: Higher categories generate more revenue

 

 

πŸ—ΊοΈ 5. CruiseItinerary Model - Route Planning

Purpose: Defines cruise routes, destinations, and journey specifications.

Field Analysis:

🏷️ Journey Identity:

  • name/name_vi (CharField(200)):
    • Use: Itinerary name (e.g., "Eastern Caribbean Adventure")
    • Business Logic: Marketing appeal, search optimization

⏱️ Duration Specification:

  • duration_days (PositiveIntegerField):
    • Use: Total cruise length in days
    • Business Logic: Vacation planning, pricing basis, calendar planning

πŸ”„ Journey Type:

  • itinerary_type (CharField(15, choices=ITINERARY_TYPES)):
    • Types: round_trip, one_way, open_jaw
    • Use: Journey logistics, customer preference matching
    • Business Logic:
      • round_trip: Most popular, return to same port
      • one_way: Repositioning cruises, different start/end
      • open_jaw: Complex routing, specialized markets

🏒 Port Management:

  • departure_port (ForeignKey(Location)):
    • Use: Starting port for cruise
    • Business Logic: Customer convenience, logistics planning
  • arrival_port (ForeignKey(Location)):
    • Use: Ending port (may equal departure for round trips)
    • Business Logic: Travel planning, transportation coordination

πŸ“ Marketing Content:

  • highlights/highlights_vi (TextField):
    • Use: Key selling points of itinerary
    • Business Logic: Marketing copy, customer excitement building

πŸ“Š Computed Properties:

  • port_count (Property):
    • Calculation: Count of ports in itinerary
    • Use: Value assessment (more ports = more destinations)

🎯 Business Applications:

  1. Route Planning: Optimize for customer appeal and operational efficiency
  2. Seasonal Adjustments: Different itineraries for different seasons
  3. Market Segmentation: Various durations appeal to different customer segments
  4. Operational Efficiency: Balance fuel costs with customer satisfaction

 

 

βš“ 6. ItineraryPort Model - Daily Schedule Management

Purpose: Manages day-by-day port visits within cruise itineraries.

Field Analysis:

πŸ”— Relationship Management:

  • itinerary (ForeignKey(CruiseItinerary)):
    • Use: Links port visit to specific itinerary
    • Business Logic: Journey organization, sequential planning
  • port (ForeignKey(Location)):
    • Use: Specific port being visited
    • Business Logic: Destination information, shore excursion planning

πŸ“… Schedule Fields:

  • day_number (PositiveIntegerField):
    • Use: Day of cruise (1, 2, 3, etc.)
    • Business Logic: Sequential organization, customer planning
    • Constraint: Unique per itinerary (can't have duplicate days)
  • arrival_time (TimeField(null=True)):
    • Use: When ship arrives at port
    • Business Logic: Shore excursion planning, customer scheduling
  • departure_time (TimeField(null=True)):
    • Use: When ship leaves port
    • Business Logic: Excursion duration limits, customer planning

🌊 Special Day Types:

  • is_sea_day (BooleanField(default=False)):
    • Use: Indicates days at sea with no port visits
    • Business Logic:
      • Relaxation time
      • Onboard activity focus
      • Ship amenity utilization
      • Transit between distant ports

πŸ“ Additional Information:

  • notes/notes_vi (TextField):
    • Use: Special information about port visit
    • Business Logic:
      • Tender ports (ship anchors offshore)
      • Weather considerations
      • Special events at port
      • Visa requirements

🎯 Operational Applications:

  1. Customer Planning: Daily schedules help passengers plan activities
  2. Shore Excursion Coordination: Timing determines available tours
  3. Fuel Management: Sea days vs. port days affect operational costs
  4. Customer Satisfaction: Balance of port time vs. sea time

 

 

🚒 7. Cruise Model - Specific Departure Management

Purpose: Represents specific cruise departures with pricing, deals, and availability.

Field Analysis:

πŸ”— Core Relationships:

  • ship (ForeignKey(Ship)):
    • Use: Which ship operates this cruise
    • Business Logic: Capacity, amenities, service level determination
  • itinerary (ForeignKey(CruiseItinerary)):
    • Use: Route and destinations for this cruise
    • Business Logic: Experience definition, marketing appeal

πŸ“… Temporal Management:

  • departure_date (DateField):
    • Use: When cruise begins
    • Business Logic: Inventory management, customer planning, seasonality
  • return_date (DateField):
    • Use: When cruise ends
    • Business Logic: Duration calculation, planning coordination

πŸ“Š Status Management:

  • status (CharField(15, choices=STATUS_CHOICES)):
    • Options: active, sold_out, cancelled, completed
    • Use: Availability control, booking eligibility
    • Business Logic:
      • active: Available for booking
      • sold_out: No cabins available
      • cancelled: Operational cancellation
      • completed: Historical record

πŸ’° Deal Management System:

  • is_deal (BooleanField(default=False)):
    • Use: Flags special pricing offers
    • Business Logic: Marketing promotion, revenue optimization
  • deal_type (CharField(15, choices=DEAL_TYPES)):
    • Types: early_bird, last_minute, group, senior, military, repeat, two_for_one
    • Use: Targeted customer segments
    • Business Logic:
      • early_bird: Book far in advance
      • last_minute: Fill inventory quickly
      • group: Volume discounts
      • senior/military: Demographic targeting
      • repeat: Customer loyalty
      • two_for_one: Aggressive promotion
  • deal_discount_percent (DecimalField(5,2)):
    • Use: Percentage discount amount
    • Business Logic: Pricing calculation, margin management
  • deal_expires (DateTimeField(null=True)):
    • Use: Deal expiration deadline
    • Business Logic: Urgency creation, inventory management

🎁 Included Services:

  • airfare_included (BooleanField):
  • shore_excursions_included (BooleanField):
  • wifi_included (BooleanField):
  • drinks_package_included (BooleanField):
  • gratuities_included (BooleanField):
    • Use: Package value propositions
    • Business Logic: Competitive differentiation, all-inclusive pricing

πŸ“Š Computed Properties:

  • days_until_departure (Property):
    • Calculation: Days from today to departure
    • Use: Urgency indicators, last-minute deal eligibility
  • is_last_minute (Property):
    • Logic: True if departure ≤ 90 days
    • Use: Special pricing triggers, marketing campaigns

🎯 Revenue Management Applications:

  1. Dynamic Pricing: Deals and discounts optimize revenue
  2. Inventory Control: Status management prevents overbooking
  3. Market Segmentation: Different deal types target different customers
  4. Package Optimization: Included services create value perception

 

 

πŸ’° 8. CruisePrice Model - Revenue Management

Purpose: Manages pricing for different cabin categories with complex pricing structures.

Field Analysis:

πŸ”— Pricing Relationships:

  • cruise (ForeignKey(Cruise)):
  • cabin_category (ForeignKey(CabinCategory)):
    • Use: Links specific pricing to cruise and cabin type
    • Business Logic: Dynamic pricing by cabin quality and cruise demand
    • Constraint: Unique combination prevents duplicate pricing

πŸ’΅ Base Pricing Structure:

  • price_per_person (DecimalField(10,2)):
    • Use: Standard per-person rate for double occupancy
    • Business Logic: Primary pricing metric, revenue calculation
  • single_supplement (DecimalField(10,2)):
    • Use: Additional fee for solo travelers
    • Business Logic: Compensates for lost double occupancy revenue

πŸ‘¨‍πŸ‘©‍πŸ‘§‍πŸ‘¦ Family Pricing:

  • third_guest_price (DecimalField(10,2, null=True)):
  • fourth_guest_price (DecimalField(10,2, null=True)):
    • Use: Reduced rates for additional guests in same cabin
    • Business Logic: Family market targeting, cabin space optimization

🏒 Inventory Management:

  • total_cabins (PositiveIntegerField(default=0)):
    • Use: Total cabins available in this category
    • Business Logic: Inventory planning, ship capacity allocation
  • available_cabins (PositiveIntegerField(default=0)):
    • Use: Currently available cabins for booking
    • Business Logic: Real-time availability, revenue optimization

πŸ’Ό Fee Structure:

  • port_charges (DecimalField(8,2)):
    • Use: Mandatory port fees (not cruise line revenue)
    • Business Logic: Transparent pricing, regulatory compliance
  • government_fees (DecimalField(8,2)):
    • Use: Government taxes and fees
    • Business Logic: Regulatory compliance, transparent pricing

πŸ“Š Computed Properties:

  • total_price_per_person (Property):
    • Calculation: Base price + port charges + government fees
    • Use: Complete cost transparency
  • discounted_price (Property):
    • Calculation: Applies cruise deal discounts
    • Use: Promotional pricing display
  • savings_amount (Property):
    • Calculation: Original price - discounted price
    • Use: Deal value communication
  • is_available (Property):
    • Logic: available_cabins > 0
    • Use: Booking eligibility, search filtering

🎯 Revenue Optimization Applications:

  1. Dynamic Pricing: Adjust prices based on demand and availability
  2. Yield Management: Optimize revenue per cabin
  3. Competitive Positioning: Price comparison with other cruise lines
  4. Family Marketing: Special family rates attract multi-guest bookings

 

 

πŸ“· 9. CruiseImage Model - Visual Content Management

Purpose: Manages images for cruises and ships with categorization and ordering.

Field Analysis:

πŸ”— Content Relationships:

  • cruise (ForeignKey(Cruise, null=True, blank=True)):
  • ship (ForeignKey(Ship, null=True, blank=True)):
    • Use: Flexible image association with either cruises or ships
    • Business Logic: Shared image library, content reuse

πŸ–ΌοΈ Image Management:

  • image (ImageField(upload_to='cruise_images/')):
    • Use: Actual image file storage
    • Business Logic: Visual marketing, customer attraction

🏷️ Content Categorization:

  • image_type (CharField(20, choices=IMAGE_TYPES)):
    • Types: ship_exterior, ship_interior, cabin, dining, entertainment, destination, amenity
    • Use: Organized image galleries, targeted display
    • Business Logic:
      • ship_exterior: Ship beauty, size impression
      • cabin: Accommodation quality
      • dining: Food quality, restaurant ambiance
      • entertainment: Activity options
      • destination: Port appeal

πŸ“ Content Description:

  • caption/caption_vi (CharField(200)):
    • Use: Image descriptions and context
    • Business Logic: SEO optimization, accessibility, context

⭐ Presentation Control:

  • is_featured (BooleanField(default=False)):
    • Use: Highlights best images for primary display
    • Business Logic: Marketing impact, first impression management
  • order (PositiveIntegerField(default=0)):
    • Use: Controls image sequence in galleries
    • Business Logic: Narrative flow, impact optimization

🎯 Marketing Applications:

  1. Visual Storytelling: Organized image types tell complete cruise story
  2. First Impressions: Featured images create immediate appeal
  3. Expectation Setting: Accurate representation builds trust
  4. SEO Optimization: Proper captions improve search visibility

 

 

⭐ 10. CruiseReview Model - Customer Feedback System

Purpose: Comprehensive customer review system with multiple rating dimensions.

Field Analysis:

πŸ”— Review Relationships:

  • cruise (ForeignKey(Cruise)):
  • user (ForeignKey(User)):
    • Use: Links reviews to specific cruises and users
    • Business Logic: Authentic feedback, prevents duplicate reviews
    • Constraint: One review per user per cruise

⭐ Multi-Dimensional Rating System:

  • overall_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: General satisfaction score (1-5)
    • Business Logic: Primary ranking metric, quick assessment
  • ship_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Ship condition, cleanliness, layout satisfaction
    • Business Logic: Ship maintenance feedback, facility quality
  • service_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Staff service quality
    • Business Logic: Training needs identification, service excellence
  • dining_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Food quality and dining experience
    • Business Logic: Culinary program feedback, chef performance
  • entertainment_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Shows, activities, entertainment quality
    • Business Logic: Entertainment program evaluation, guest satisfaction
  • value_rating (IntegerField(choices=RATING_CHOICES)):
    • Use: Price-to-value perception
    • Business Logic: Pricing strategy validation, competitive positioning

πŸ“ Detailed Feedback:

  • title (CharField(200)):
    • Use: Review headline for quick scanning
    • Business Logic: Attention grabbing, summary sentiment
  • review_text (TextField):
    • Use: Detailed review content
    • Business Logic: Comprehensive feedback, specific improvement areas
  • pros (TextField(blank=True)):
  • cons (TextField(blank=True)):
    • Use: Structured positive and negative feedback
    • Business Logic: Balanced perspective, specific improvement identification

🧳 Travel Context:

  • travel_date (DateField):
    • Use: When customer took the cruise
    • Business Logic: Review recency, seasonal feedback patterns
  • cabin_category (ForeignKey(CabinCategory)):
    • Use: Which cabin type reviewer experienced
    • Business Logic: Cabin-specific feedback, pricing validation
  • traveler_type (CharField(50)):
    • Use: Travel context (Couple, Family, Solo, Group)
    • Business Logic: Market segment feedback, targeted improvements

πŸ” Quality Assurance:

  • is_verified (BooleanField(default=False)):
    • Use: Confirms reviewer actually took the cruise
    • Business Logic: Review authenticity, trust building
  • helpful_votes (PositiveIntegerField(default=0)):
    • Use: Community validation of review usefulness
    • Business Logic: Review ranking, quality indication

🎯 Business Intelligence Applications:

  1. Service Improvement: Multi-dimensional ratings identify specific improvement areas
  2. Quality Control: Verified reviews ensure authentic feedback
  3. Market Research: Traveler type analysis reveals segment preferences

Competitive Analysis: Value ratings indicate pricing competitiveness

 

 

❀️ 11. CruiseWishlist Model - Customer Interest Tracking

Purpose: Tracks customer interest in specific cruises for marketing and inventory management.

Field Analysis:

πŸ”— Interest Relationships:

  • user (ForeignKey(User)):
  • cruise (ForeignKey(Cruise)):
    • Use: Links customer interest to specific cruises
    • Business Logic: Personalized marketing, demand forecasting
    • Constraint: Prevents duplicate wishlist entries

πŸ“… Timing Information:

  • created_at (DateTimeField(auto_now_add=True)):
    • Use: When customer added cruise to wishlist
    • Business Logic: Interest timing, priority indication

🎯 Marketing Applications:

  1. Targeted Promotions: Market deals to interested customers first
  2. Demand Forecasting: High wishlist counts indicate popular cruises
  3. Inventory Alerts: Notify customers when wishlisted cruises have deals
  4. Customer Retention: Personalized recommendations based on interests

 

 

πŸ“‹ 12. CruiseBooking Model - Transaction Management

Purpose: Complete booking management system with payment tracking and commission calculation.

Field Analysis:

πŸ”— Booking Relationships:

  • user (ForeignKey(User)):
  • cruise (ForeignKey(Cruise)):
  • cabin_category (ForeignKey(CabinCategory)):
    • Use: Complete booking specification
    • Business Logic: Customer assignment, inventory allocation, service delivery

🏷️ Booking Identity:

  • booking_number (CharField(20, unique=True)):
    • Use: Unique booking identifier (auto-generated: "CR" + 8 random chars)
    • Business Logic: Customer service reference, payment tracking, confirmation

πŸ‘₯ Guest Management:

  • primary_guest_name (CharField(200)):
  • primary_guest_email (EmailField):
  • primary_guest_phone (CharField(20)):
    • Use: Primary contact for booking communications
    • Business Logic: Customer service, emergency contact, marketing
  • number_of_guests (PositiveIntegerField(default=2)):
    • Use: Total guests in booking
    • Business Logic: Cabin assignment, pricing calculation, safety compliance
  • special_requests (TextField(blank=True)):
    • Use: Dietary restrictions, accessibility needs, celebrations
    • Business Logic: Service customization, guest satisfaction

πŸ’° Financial Management:

  • base_price (DecimalField(10,2)):
    • Use: Cruise fare before taxes and fees
    • Business Logic: Revenue calculation, pricing transparency
  • taxes_and_fees (DecimalField(10,2)):
    • Use: Government and port charges
    • Business Logic: Cost transparency, regulatory compliance
  • total_price (DecimalField(10,2)):
    • Use: Complete booking cost
    • Business Logic: Payment processing, customer billing
  • commission_rate (DecimalField(5,2, default=10)):
  • commission_amount (DecimalField(10,2)):
    • Use: Partner commission tracking
    • Business Logic: Revenue sharing, partner compensation

πŸ“Š Status Tracking:

  • status (CharField(15, choices=STATUS_CHOICES)):
    • Options: pending, confirmed, cancelled, completed
    • Use: Booking lifecycle management
    • Business Logic:
      • pending: Awaiting payment or confirmation
      • confirmed: Active booking, cabin assigned
      • cancelled: Booking terminated, cabin released
      • completed: Cruise finished, final status

πŸ’³ Payment Management:

  • deposit_amount (DecimalField(10,2)):
  • deposit_paid (BooleanField(default=False)):
    • Use: Initial payment tracking
    • Business Logic: Booking security, cash flow management
  • final_payment_due (DateField(null=True)):
  • final_payment_made (BooleanField(default=False)):
    • Use: Balance payment tracking
    • Business Logic: Payment deadlines, booking confirmation

πŸ“… Date Tracking:

  • booking_date (DateTimeField(auto_now_add=True)):
  • confirmation_date (DateTimeField(null=True)):
  • cancellation_date (DateTimeField(null=True)):
    • Use: Booking lifecycle timestamps
    • Business Logic: SLA tracking, customer service, reporting

 

 

🎯 Business Operations Applications:

  1. Revenue Management: Track booking values and commission payments
  2. Customer Service: Complete booking history and contact information
  3. Inventory Control: Cabin allocation and availability management
  4. Payment Processing: Deposit and final payment workflow management
  5. Reporting: Financial reporting and partner commission calculations

 

 

πŸ”„ Model Relationships Summary

Primary Hierarchies:

  1. CruiseLine → Ship → CabinCategory → CruisePrice
  2. CruiseItinerary → ItineraryPort → Cruise → CruiseBooking
  3. Ship → ShipAmenity (Many-to-Many)
  4. Cruise → CruiseReviewCruiseWishlistCruiseImage

Key Business Flows:

  1. Content Creation: CruiseLine → Ship → Amenities → CabinCategories
  2. Route Planning: CruiseItinerary → ItineraryPort scheduling
  3. Inventory Management: Cruise → CruisePrice → availability tracking
  4. Customer Journey: Search → Wishlist → Booking → Review
  5. Revenue Tracking: Booking → commission calculation → provider payment

This comprehensive model structure enables a full-featured cruise booking platform with sophisticated inventory management, dynamic pricing, customer relationship management, and business intelligence capabilities

Attached Files

0 files found.

You are viewing this article in public mode. Some features may be limited.