This commit is contained in:
Holger Sielaff
2025-08-02 20:08:33 +02:00
commit 79c68169f6
47 changed files with 4880 additions and 0 deletions

166
example/README.md Normal file
View File

@@ -0,0 +1,166 @@
# Django Translatable Fields - Examples
This directory contains comprehensive examples demonstrating all features of django-translatable-fields.
## Files Overview
- **`models.py`** - Example models showcasing all translatable field types
- **`admin.py`** - Admin configurations for the example models
- **`usage_examples.py`** - Practical usage examples and demonstrations
## Example Models
### 1. Product Model
Demonstrates basic translatable fields:
- `CharField` - Product name
- `TextField` - Product description
- `SlugField` - SEO-friendly URL slug
- `EmailField` - Support contact email
- `URLField` - Product website URL
### 2. Category Model
Shows category organization with translations:
- `CharField` - Category name
- `TextField` - Category description
- `SlugField` - URL-friendly category slug
- `CharField` - SEO meta description
### 3. BlogPost Model
Comprehensive example with all field types:
- `CharField` - Blog post title and meta description
- `TextField` - Main blog post content
- `SlugField` - URL slug for the post
- `EmailField` - Author contact email
- `URLField` - External reference URL
### 4. Company Model
Business-focused model with contact information:
- `CharField` - Company name
- `TextField` - Company description and address
- `SlugField` - Company URL slug
- `EmailField` - Main contact email
- `URLField` - Company website
## Running the Examples
### 1. Django Shell Usage
```python
# Start Django shell
python manage.py shell
# Import and run examples
from example.usage_examples import run_all_examples
run_all_examples()
```
### 2. Individual Example Functions
```python
from example.usage_examples import (
create_sample_data,
demonstrate_language_switching,
demonstrate_direct_access,
demonstrate_translation_methods,
demonstrate_all_field_types
)
# Create sample data
product, blog_post, company = create_sample_data()
# Try different demonstrations
demonstrate_language_switching()
demonstrate_direct_access()
demonstrate_translation_methods()
demonstrate_all_field_types()
```
## Usage Patterns Demonstrated
### 1. Language-Aware Access
```python
from django.utils.translation import activate
# Fields automatically return values based on current language
activate('en')
print(product.name) # "Awesome Widget"
activate('de')
print(product.name) # "Fantastisches Widget"
```
### 2. Direct Language Access
```python
# Access specific language directly
print(product.name_en) # "Awesome Widget"
print(product.name_de) # "Fantastisches Widget"
print(product.name_fr) # "Widget Fantastique"
```
### 3. Translation Management
```python
# Get all translations for a field
translations = product.get_all_translations('name')
# {'en': 'Awesome Widget', 'de': 'Fantastisches Widget', 'fr': 'Widget Fantastique'}
# Get specific translation
german_name = product.get_translation('name', 'de')
# Set translation programmatically
product.set_translation('name', 'es', 'Widget Fantástico')
product.save()
```
### 4. All Field Types in Action
The examples demonstrate proper usage of:
- **CharField** - Text fields with max_length
- **TextField** - Longer text content
- **SlugField** - URL-friendly identifiers
- **EmailField** - Email addresses with validation
- **URLField** - Web URLs with validation
## Admin Interface Features
The admin examples show:
- Clean interface with translate buttons
- Modal overlays for translation management
- WYSIWYG editor for TextField content
- Proper field validation per language
- Drag and resize functionality for modals
## Field Validation
Each field type includes proper validation:
- **EmailField** - Valid email format per language
- **URLField** - Valid URL format per language
- **SlugField** - Slug format validation per language
- **CharField/TextField** - Length and content validation
## Integration with Django Features
Examples demonstrate compatibility with:
- Django admin interface
- Model forms and validation
- Django's internationalization system
- Search functionality
- List filters and display options
- Prepopulated fields (for slugs)
## Best Practices Shown
1. **Model Design** - Proper use of translatable vs non-translatable fields
2. **Admin Configuration** - Clean, user-friendly admin interfaces
3. **Data Access** - Efficient translation retrieval and management
4. **Validation** - Proper field validation across languages
5. **SEO Optimization** - Language-specific slugs and meta descriptions
## Testing Your Implementation
Use these examples to:
1. Verify all field types work correctly
2. Test language switching functionality
3. Validate admin interface behavior
4. Check translation storage and retrieval
5. Ensure proper field validation
The examples provide a solid foundation for implementing translatable fields in your own Django applications.