fix for #348
This commit is contained in:
@ -91,7 +91,9 @@ class ModelFieldFactory:
|
|||||||
nullable, default, server_default, pydantic_only
|
nullable, default, server_default, pydantic_only
|
||||||
) or is_auto_primary_key(primary_key, autoincrement)
|
) or is_auto_primary_key(primary_key, autoincrement)
|
||||||
sql_nullable = (
|
sql_nullable = (
|
||||||
nullable if sql_nullable is None else (sql_nullable and not primary_key)
|
False
|
||||||
|
if primary_key
|
||||||
|
else (nullable if sql_nullable is None else sql_nullable)
|
||||||
)
|
)
|
||||||
|
|
||||||
namespace = dict(
|
namespace = dict(
|
||||||
|
|||||||
@ -0,0 +1,39 @@
|
|||||||
|
import databases
|
||||||
|
import sqlalchemy
|
||||||
|
|
||||||
|
import ormar
|
||||||
|
from tests.settings import DATABASE_URL
|
||||||
|
|
||||||
|
database = databases.Database(DATABASE_URL)
|
||||||
|
metadata = sqlalchemy.MetaData()
|
||||||
|
|
||||||
|
|
||||||
|
class BaseMeta(ormar.ModelMeta):
|
||||||
|
metadata = metadata
|
||||||
|
database = database
|
||||||
|
|
||||||
|
|
||||||
|
class AutoincrementModel(ormar.Model):
|
||||||
|
class Meta(BaseMeta):
|
||||||
|
pass
|
||||||
|
|
||||||
|
id: int = ormar.Integer(primary_key=True)
|
||||||
|
|
||||||
|
|
||||||
|
class NonAutoincrementModel(ormar.Model):
|
||||||
|
class Meta(BaseMeta):
|
||||||
|
pass
|
||||||
|
|
||||||
|
id: int = ormar.Integer(primary_key=True, autoincrement=False)
|
||||||
|
|
||||||
|
|
||||||
|
class ExplicitNullableModel(ormar.Model):
|
||||||
|
class Meta(BaseMeta):
|
||||||
|
pass
|
||||||
|
|
||||||
|
id: int = ormar.Integer(primary_key=True, nullable=True)
|
||||||
|
|
||||||
|
|
||||||
|
def test_pk_field_is_not_null():
|
||||||
|
for model in [AutoincrementModel, NonAutoincrementModel, ExplicitNullableModel]:
|
||||||
|
assert not model.Meta.table.c.get("id").nullable
|
||||||
Reference in New Issue
Block a user