add sql_nullable param
This commit is contained in:
@ -43,6 +43,7 @@ class BaseField(FieldInfo):
|
||||
self.primary_key: bool = kwargs.pop("primary_key", False)
|
||||
self.autoincrement: bool = kwargs.pop("autoincrement", False)
|
||||
self.nullable: bool = kwargs.pop("nullable", False)
|
||||
self.sql_nullable: bool = kwargs.pop("sql_nullable", False)
|
||||
self.index: bool = kwargs.pop("index", False)
|
||||
self.unique: bool = kwargs.pop("unique", False)
|
||||
self.pydantic_only: bool = kwargs.pop("pydantic_only", False)
|
||||
@ -265,7 +266,7 @@ class BaseField(FieldInfo):
|
||||
self.column_type,
|
||||
*self.construct_constraints(),
|
||||
primary_key=self.primary_key,
|
||||
nullable=self.nullable and not self.primary_key,
|
||||
nullable=self.sql_nullable,
|
||||
index=self.index,
|
||||
unique=self.unique,
|
||||
default=self.ormar_default,
|
||||
|
||||
@ -234,6 +234,9 @@ def ForeignKey( # noqa CFQ002
|
||||
skip_reverse = kwargs.pop("skip_reverse", False)
|
||||
skip_field = kwargs.pop("skip_field", False)
|
||||
|
||||
sql_nullable = kwargs.pop("sql_nullable", None)
|
||||
sql_nullable = nullable if sql_nullable is None else sql_nullable
|
||||
|
||||
validate_not_allowed_fields(kwargs)
|
||||
|
||||
if to.__class__ == ForwardRef:
|
||||
@ -255,6 +258,7 @@ def ForeignKey( # noqa CFQ002
|
||||
alias=name,
|
||||
name=kwargs.pop("real_name", None),
|
||||
nullable=nullable,
|
||||
sql_nullable=sql_nullable,
|
||||
constraints=constraints,
|
||||
unique=unique,
|
||||
column_type=column_type,
|
||||
|
||||
@ -75,6 +75,7 @@ class ModelFieldFactory:
|
||||
default = kwargs.pop("default", None)
|
||||
server_default = kwargs.pop("server_default", None)
|
||||
nullable = kwargs.pop("nullable", None)
|
||||
sql_nullable = kwargs.pop("sql_nullable", None)
|
||||
pydantic_only = kwargs.pop("pydantic_only", False)
|
||||
|
||||
primary_key = kwargs.pop("primary_key", False)
|
||||
@ -86,6 +87,13 @@ class ModelFieldFactory:
|
||||
|
||||
overwrite_pydantic_type = kwargs.pop("overwrite_pydantic_type", None)
|
||||
|
||||
nullable = is_field_nullable(
|
||||
nullable, default, server_default, pydantic_only
|
||||
) or is_auto_primary_key(primary_key, autoincrement)
|
||||
sql_nullable = (
|
||||
nullable if sql_nullable is None else (sql_nullable and not primary_key)
|
||||
)
|
||||
|
||||
namespace = dict(
|
||||
__type__=cls._type,
|
||||
__pydantic_type__=overwrite_pydantic_type
|
||||
@ -97,8 +105,8 @@ class ModelFieldFactory:
|
||||
primary_key=primary_key,
|
||||
default=default,
|
||||
server_default=server_default,
|
||||
nullable=is_field_nullable(nullable, default, server_default, pydantic_only)
|
||||
or is_auto_primary_key(primary_key, autoincrement),
|
||||
nullable=nullable,
|
||||
sql_nullable=sql_nullable,
|
||||
index=kwargs.pop("index", False),
|
||||
unique=kwargs.pop("unique", False),
|
||||
pydantic_only=pydantic_only,
|
||||
|
||||
Reference in New Issue
Block a user