Fields¶
All available field types for FastEdgy models, listed alphabetically.
Big Integer¶
64-bit integer field for large numbers.
class Analytics(BaseModel):
class Meta:
tablename = "analytics"
total_page_views = fields.BigIntegerField(label=_t('Total page views'))
Binary Data¶
Field for storing binary data.
class Attachment(BaseModel):
class Meta:
tablename = "attachments"
data = fields.BinaryField(label=_t('File Data'))
Boolean¶
Boolean field for true/false values.
class UserAccount(BaseModel):
class Meta:
tablename = "user_accounts"
is_account_active = fields.BooleanField(default=True, label=_t('Is Account Active'))
Character Choice¶
Character-based choice field with predefined string options.
from enum import Enum
class UserRole(str, Enum):
admin = "admin"
user = "user"
guest = "guest"
class User(BaseModel):
class Meta:
tablename = "users"
role = fields.CharChoiceField(choices=UserRole, default=UserRole.user, label=_t('User Role'))
Character¶
Short text field with maximum length limit.
class User(BaseModel):
class Meta:
tablename = "users"
name = fields.CharField(max_length=100, label=_t('Name'))
Choice¶
Choice field for predefined options.
from enum import Enum
class OrderStatus(str, Enum):
pending = "pending"
shipped = "shipped"
delivered = "delivered"
class Order(BaseModel):
class Meta:
tablename = "orders"
status = fields.ChoiceField(choices=OrderStatus, default=OrderStatus.pending, label=_t('Status'))
Composite¶
Composite field for combining multiple fields into one.
class Location(BaseModel):
class Meta:
tablename = "locations"
coordinates = fields.CompositeField(label=_t('Coordinates'))
Computed¶
Computed field for database-computed values.
class Order(BaseModel):
class Meta:
tablename = "orders"
total = fields.ComputedField(label=_t('Total Amount'))
Date¶
Date field for storing dates (year, month, day).
class Event(BaseModel):
class Meta:
tablename = "events"
event_date = fields.DateField(label=_t('Event Date'))
Date Time¶
DateTime field for storing date and time with timezone support.
class Post(BaseModel):
class Meta:
tablename = "posts"
created_at = fields.DateTimeField(auto_now_add=True, label=_t('Created At'))
Decimal¶
Fixed-precision decimal field for exact calculations.
class Product(BaseModel):
class Meta:
tablename = "products"
price = fields.DecimalField(max_digits=10, decimal_places=2, label=_t('Price'))
Duration¶
Field for storing time duration/intervals.
class Task(BaseModel):
class Meta:
tablename = "tasks"
estimated_duration = fields.DurationField(label=_t('Estimated Duration'))
Email¶
Email field with automatic email validation.
class User(BaseModel):
class Meta:
tablename = "users"
email = fields.EmailField(label=_t('Email Address'))
Exclude¶
Field that is excluded from certain operations.
class InternalModel(BaseModel):
class Meta:
tablename = "internal_models"
internal_data = fields.ExcludeField(label=_t('Internal Data'))
File¶
File field for storing file references.
class Document(BaseModel):
class Meta:
tablename = "documents"
file = fields.FileField(label=_t('File Path'))
Float¶
Floating-point number field.
class Measurement(BaseModel):
class Meta:
tablename = "measurements"
temperature = fields.FloatField(label=_t('Temperature'))
Foreign Key¶
Many-to-one relationship field linking to another model.
class Product(BaseModel):
class Meta:
tablename = "products"
category = fields.ForeignKey("Category", on_delete="CASCADE", label=_t('Category'))
HTML¶
HTML content field with specialized handling for HTML markup.
class Article(BaseModel):
class Meta:
tablename = "articles"
content = fields.HTMLField(label=_t('HTML Content'))
Image¶
Image field for storing image file references.
class Product(BaseModel):
class Meta:
tablename = "products"
image = fields.ImageField(label=_t('Image'))
Integer¶
32-bit integer field.
class Product(BaseModel):
class Meta:
tablename = "products"
quantity = fields.IntegerField(label=_t('Quantity'))
IP Address¶
IP address field for storing IPv4/IPv6 addresses.
class Connection(BaseModel):
class Meta:
tablename = "connections"
ip_address = fields.IPAddressField(label=_t('IP Address'))
JSON¶
JSON field for storing structured data.
class Configuration(BaseModel):
class Meta:
tablename = "configurations"
settings = fields.JSONField(label=_t('Settings'))
Many to Many¶
Many-to-many relationship field for multiple associations.
class Tag(BaseModel):
class Meta:
tablename = "tags"
products = fields.ManyToManyField("Product", related_name="tags", label=_t('Products'))
One to One¶
One-to-one relationship field for unique associations.
class UserProfile(BaseModel):
class Meta:
tablename = "user_profiles"
user = fields.OneToOneField("User", on_delete="CASCADE", label=_t('User'))
Password¶
Password field with automatic hashing.
class User(BaseModel):
class Meta:
tablename = "users"
password = fields.PasswordField(label=_t('Password'))
PostgreSQL Array¶
PostgreSQL array field for storing arrays of values.
class Product(BaseModel):
class Meta:
tablename = "products"
tags = fields.PGArrayField(base_field=fields.CharField(max_length=50), label=_t('Tags'))
Phone¶
Phone number field with phone number validation.
class Contact(BaseModel):
class Meta:
tablename = "contacts"
phone = fields.PhoneField(label=_t('Phone Number'))
Point¶
Geometric point field for storing geographic coordinates (longitude, latitude).
class Store(BaseModel):
class Meta:
tablename = "stores"
location = fields.PointField(srid=4326, label=_t('Location'))
Parameters: - srid
(int, default=4326): Spatial Reference System Identifier (WGS84 by default)
Storage format: - Python type: tuple[float, float]
(longitude, latitude) - Database type: PostGIS geometry(Point, SRID)
Usage:
# Create a store with coordinates
store = Store(name="Main Store", location=(2.3522, 48.8566)) # Paris
await store.save()
# Query by location
stores = await Store.query.filter(location=(2.3522, 48.8566)).all()
Placeholder¶
Placeholder field for dynamic field definitions.
class DynamicModel(BaseModel):
class Meta:
tablename = "dynamic_models"
dynamic_field = fields.PlaceholderField(label=_t('Dynamic Field'))
Reference Foreign Key¶
Foreign key with additional reference capabilities.
class Comment(BaseModel):
class Meta:
tablename = "comments"
author = fields.RefForeignKey("User", on_delete="CASCADE", label=_t('Author'))
Small Integer¶
16-bit integer field for small numbers.
class Settings(BaseModel):
class Meta:
tablename = "settings"
priority = fields.SmallIntegerField(label=_t('Priority'))
Text¶
Large text field for long content without length limit.
class Post(BaseModel):
class Meta:
tablename = "posts"
content = fields.TextField(label=_t('Content'))
Time¶
Time field for storing time information (hours, minutes, seconds).
class Schedule(BaseModel):
class Meta:
tablename = "schedules"
start_time = fields.TimeField(label=_t('Start Time'))
URL¶
URL field with automatic URL validation.
class Website(BaseModel):
class Meta:
tablename = "websites"
url = fields.URLField(label=_t('Website URL'))
UUID¶
UUID field for storing universally unique identifiers.
class Token(BaseModel):
class Meta:
tablename = "tokens"
uuid = fields.UUIDField(label=_t('Unique ID'))
Vector¶
Vector field for AI embeddings and similarity search.