This commit is contained in:
collerek
2021-09-26 12:07:08 +02:00
parent 101ffb24e3
commit 8376fb023a
2 changed files with 42 additions and 1 deletions

View File

@ -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(

View File

@ -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