Initial
This commit is contained in:
91
example/models.py
Normal file
91
example/models.py
Normal file
@@ -0,0 +1,91 @@
|
||||
"""
|
||||
Example models demonstrating django-translatable-fields usage.
|
||||
"""
|
||||
from django.db import models
|
||||
from django_translatable_fields.fields import CharField, TextField, EmailField, URLField, SlugField
|
||||
from django_translatable_fields.descriptors import TranslatableModelMixin
|
||||
|
||||
|
||||
class Product(TranslatableModelMixin, models.Model):
|
||||
"""
|
||||
Example product model with translatable fields.
|
||||
"""
|
||||
name = CharField(max_length=200, translatable=True, help_text="Product name")
|
||||
description = TextField(translatable=True, help_text="Product description")
|
||||
slug = SlugField(max_length=200, translatable=True, help_text="SEO-friendly URL slug")
|
||||
support_email = EmailField(translatable=True, help_text="Support contact email")
|
||||
website = URLField(translatable=True, blank=True, help_text="Product website URL")
|
||||
price = models.DecimalField(max_digits=10, decimal_places=2)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
class Meta:
|
||||
app_label = 'example'
|
||||
|
||||
def __str__(self):
|
||||
return self.name or f"Product {self.id}"
|
||||
|
||||
|
||||
class Category(TranslatableModelMixin, models.Model):
|
||||
"""
|
||||
Example category model with translatable fields.
|
||||
"""
|
||||
name = CharField(max_length=100, translatable=True, help_text="Category name")
|
||||
description = TextField(translatable=True, blank=True, help_text="Category description")
|
||||
slug = SlugField(max_length=100, translatable=True, help_text="URL-friendly category slug")
|
||||
meta_description = CharField(max_length=160, translatable=True, blank=True, help_text="SEO meta description")
|
||||
|
||||
class Meta:
|
||||
app_label = 'example'
|
||||
verbose_name_plural = "Categories"
|
||||
|
||||
def __str__(self):
|
||||
return self.name or f"Category {self.id}"
|
||||
|
||||
|
||||
class BlogPost(TranslatableModelMixin, models.Model):
|
||||
"""
|
||||
Example blog post model demonstrating all translatable field types.
|
||||
"""
|
||||
title = CharField(max_length=200, translatable=True, help_text="Blog post title")
|
||||
content = TextField(translatable=True, help_text="Main blog post content")
|
||||
slug = SlugField(max_length=200, translatable=True, help_text="URL slug for the post")
|
||||
author_email = EmailField(translatable=True, help_text="Author contact email")
|
||||
external_link = URLField(translatable=True, blank=True, help_text="External reference URL")
|
||||
meta_description = CharField(max_length=160, translatable=True, blank=True, help_text="SEO meta description")
|
||||
|
||||
# Non-translatable fields
|
||||
published = models.BooleanField(default=False)
|
||||
publish_date = models.DateTimeField(null=True, blank=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
app_label = 'example'
|
||||
ordering = ['-created_at']
|
||||
|
||||
def __str__(self):
|
||||
return self.title or f"Blog Post {self.id}"
|
||||
|
||||
|
||||
class Company(TranslatableModelMixin, models.Model):
|
||||
"""
|
||||
Example company model with contact information in multiple languages.
|
||||
"""
|
||||
name = CharField(max_length=200, translatable=True, help_text="Company name")
|
||||
description = TextField(translatable=True, help_text="Company description")
|
||||
slug = SlugField(max_length=200, translatable=True, help_text="Company URL slug")
|
||||
contact_email = EmailField(translatable=True, help_text="Main contact email")
|
||||
website = URLField(translatable=True, help_text="Company website")
|
||||
address = TextField(translatable=True, help_text="Company address")
|
||||
|
||||
# Non-translatable fields
|
||||
founded_year = models.IntegerField(null=True, blank=True)
|
||||
employee_count = models.IntegerField(null=True, blank=True)
|
||||
is_active = models.BooleanField(default=True)
|
||||
|
||||
class Meta:
|
||||
app_label = 'example'
|
||||
verbose_name_plural = "Companies"
|
||||
|
||||
def __str__(self):
|
||||
return self.name or f"Company {self.id}"
|
||||
Reference in New Issue
Block a user