fix for #348
This commit is contained in:
@ -91,7 +91,9 @@ class ModelFieldFactory:
|
||||
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)
|
||||
False
|
||||
if primary_key
|
||||
else (nullable if sql_nullable is None else sql_nullable)
|
||||
)
|
||||
|
||||
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