mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 07:31:07 -05:00
- Created an empty migration file for the moderation app to enable migrations. - Documented the resolution of the seed command failure due to missing moderation tables. - Identified and fixed a VARCHAR(10) constraint violation in the User model during seed data generation. - Updated role assignment in the seed command to comply with the field length constraint.
4.4 KiB
4.4 KiB
Seed Data Analysis - UserProfile Model Mismatch
Issue Identified
The seed_comprehensive_data.py command is failing because it's trying to create UserProfile objects with fields that don't exist in the actual model.
Error Details
TypeError: UserProfile() got unexpected keyword arguments: 'location', 'date_of_birth', 'favorite_ride_type', 'total_parks_visited', 'total_rides_ridden', 'total_coasters_ridden'
Fields Used in Seed Script vs Actual Model
Fields Used in Seed Script (lines 883-891):
user✅ (exists)bio✅ (exists)location❌ (doesn't exist)date_of_birth❌ (doesn't exist)favorite_ride_type❌ (doesn't exist)total_parks_visited❌ (doesn't exist)total_rides_ridden❌ (doesn't exist)total_coasters_ridden❌ (doesn't exist)
Actual UserProfile Model Fields (apps/accounts/models.py):
profile_id(auto-generated)user(OneToOneField)display_name(CharField, legacy)avatar(ForeignKey to CloudflareImage)pronouns(CharField)bio(TextField)twitter(URLField)instagram(URLField)youtube(URLField)discord(CharField)coaster_credits(IntegerField)dark_ride_credits(IntegerField)flat_ride_credits(IntegerField)water_ride_credits(IntegerField)
Fix Required
Update the seed script to only use fields that actually exist in the UserProfile model, and map the intended functionality to the correct fields.
Field Mapping Strategy
- Remove
location,date_of_birth,favorite_ride_type,total_parks_visited,total_rides_ridden - Map
total_coasters_ridden→coaster_credits - Can optionally populate social fields and pronouns
- Keep
bioas is
Solution Implementation Status
Status: ✅ COMPLETED - Successfully fixed the UserProfile field mapping
Applied Changes
Fixed the seed_comprehensive_data.py command in the create_users() method (lines 882-897):
Removed Invalid Fields:
location- Not in actual UserProfile modeldate_of_birth- Not in actual UserProfile modelfavorite_ride_type- Not in actual UserProfile modeltotal_parks_visited- Not in actual UserProfile modeltotal_rides_ridden- Not in actual UserProfile modeltotal_coasters_ridden- Not in actual UserProfile model
Added Valid Fields:
pronouns- Random selection from ['he/him', 'she/her', 'they/them', '']coaster_credits- Random integer 1-200 (mapped from old total_coasters_ridden)dark_ride_credits- Random integer 0-50flat_ride_credits- Random integer 0-30water_ride_credits- Random integer 0-20twitter,instagram,discord- Optional social media fields (33% chance each)
Code Changes Made
# Create user profile
user_profile = UserProfile.objects.create(user=user)
user_profile.bio = fake.text(max_nb_chars=200) if random.choice([True, False]) else ''
user_profile.pronouns = random.choice(['he/him', 'she/her', 'they/them', '']) if random.choice([True, False]) else ''
user_profile.coaster_credits = random.randint(1, 200)
user_profile.dark_ride_credits = random.randint(0, 50)
user_profile.flat_ride_credits = random.randint(0, 30)
user_profile.water_ride_credits = random.randint(0, 20)
# Optionally populate social media fields
if random.choice([True, False, False]): # 33% chance
user_profile.twitter = f"https://twitter.com/{fake.user_name()}"
if random.choice([True, False, False]): # 33% chance
user_profile.instagram = f"https://instagram.com/{fake.user_name()}"
if random.choice([True, False, False]): # 33% chance
user_profile.discord = f"{fake.user_name()}#{random.randint(1000, 9999)}"
user_profile.save()
Decision Rationale
- Field Mapping Logic: Mapped
total_coasters_riddentocoaster_creditsas the closest equivalent - Realistic Credit Distribution: Different ride types have different realistic ranges:
- Coaster credits: 1-200 (most enthusiasts focus on coasters)
- Dark ride credits: 0-50 (fewer dark rides exist)
- Flat ride credits: 0-30 (less tracked by enthusiasts)
- Water ride credits: 0-20 (seasonal/weather dependent)
- Social Media: Optional fields with low probability to create realistic sparse data
- Pronouns: Added diversity with realistic options including empty string
Next Steps
- Test the seed command to verify the fix works
- Monitor for any additional field mapping issues in other parts of the seed script