ForeignKey class¶
edgy.fields.ForeignKey
¶
Bases: ForeignKeyFieldFactory, cast(Any, object)
A factory for creating ForeignKey fields in Edgy models.
This factory extends ForeignKeyFieldFactory to provide a convenient
interface for defining foreign key relationships. It ensures that specific
server-side default and update operations are not mistakenly applied to
foreign key fields, and validates the embed_parent configuration.
methods_overwritable_by_factory
class-attribute
instance-attribute
¶
build_field
classmethod
¶
Constructs and returns a new field instance based on the factory's configuration.
This method orchestrates the creation of a BaseFieldType instance.
It determines the column type, Pydantic type, and constraints from the
provided kwargs and the factory's properties. It then instantiates
the field and calls overwrite_methods to apply any factory-defined
method overrides.
| PARAMETER | DESCRIPTION |
|---|---|
**kwargs
|
Keyword arguments for configuring the field.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
BaseFieldType
|
The newly constructed and configured field instance.
TYPE:
|
Source code in edgy/core/db/fields/factories.py
overwrite_methods
classmethod
¶
Overwrites methods on the given field_obj with methods defined in the factory.
This method iterates through the factory's own methods. If a method's name
is present in methods_overwritable_by_factory, it replaces the corresponding
method on the field_obj. It handles class methods and ensures proper
staticmethod wrapping for consistent behavior across Python versions.
| PARAMETER | DESCRIPTION |
|---|---|
field_obj
|
The field instance whose methods are to be overwritten.
TYPE:
|
Source code in edgy/core/db/fields/factories.py
repack
classmethod
¶
Repacks methods on the given field_obj that were previously overwritten
by the factory.
This method is used to re-apply the partial and staticmethod wrappers
to methods that were already overwritten. This can be necessary in scenarios
where field objects are serialized/deserialized or otherwise lose their
original method bindings. It ensures that the context (cls, field_obj)
remains correctly bound.
| PARAMETER | DESCRIPTION |
|---|---|
field_obj
|
The field instance whose methods are to be repacked.
TYPE:
|
Source code in edgy/core/db/fields/factories.py
get_constraints
classmethod
¶
Returns a sequence of constraints applicable to the column.
This method can be overridden by subclasses to provide specific database constraints for the column associated with this field type.
| PARAMETER | DESCRIPTION |
|---|---|
kwargs
|
Keyword arguments provided during field creation.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Sequence[Any]
|
Sequence[Any]: A sequence of constraint objects. |
Source code in edgy/core/db/fields/factories.py
get_column_type
classmethod
¶
Returns the SQL column type for the field.
For regular fields, this will return the appropriate SQLAlchemy column type.
For meta fields (fields that don't directly map to a database column),
it should return None.
| PARAMETER | DESCRIPTION |
|---|---|
kwargs
|
Keyword arguments provided during field creation.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Any
|
The SQLAlchemy column type or
TYPE:
|
Source code in edgy/core/db/fields/factories.py
get_pydantic_type
classmethod
¶
Returns the Pydantic type for the field.
This type is used by Pydantic for validation and serialization. By default,
it returns the field_type attribute of the factory.
| PARAMETER | DESCRIPTION |
|---|---|
kwargs
|
Keyword arguments provided during field creation.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Any
|
The Pydantic type associated with the field.
TYPE:
|
Source code in edgy/core/db/fields/factories.py
_get_field_cls
cached
staticmethod
¶
Internal static method to dynamically create and cache the actual field class.
This method uses lru_cache to ensure that the field class is created
only once for each FieldFactory type. It constructs a new type based
on the FieldFactory's __name__ and field_bases.
| PARAMETER | DESCRIPTION |
|---|---|
cls
|
The
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
BaseFieldType
|
The dynamically created and cached field class.
TYPE:
|
Source code in edgy/core/db/fields/factories.py
__new__
¶
Creates a new ForeignKey field instance.
This method primarily passes the to argument (target model) and other
kwargs to the parent ForeignKeyFieldFactory for field construction.
| PARAMETER | DESCRIPTION |
|---|---|
to
|
The target model class or its string name to which this foreign key points.
TYPE:
|
**kwargs
|
Additional keyword arguments for the foreign key field.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
BaseFieldType
|
The constructed
TYPE:
|
Source code in edgy/core/db/fields/foreign_keys.py
validate
classmethod
¶
Validates the parameters for a ForeignKey field.
This method overrides the parent validate method to enforce rules
specific to foreign keys. It explicitly disallows auto_compute_server_default,
server_default, and server_onupdate to prevent issues with relational
integrity. It also validates the format of the embed_parent argument.
| PARAMETER | DESCRIPTION |
|---|---|
kwargs
|
The dictionary of keyword arguments passed during field construction.
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
FieldDefinitionError
|
If any validation rule is violated. |