Fix populate_default_values
This commit is contained in:
@ -164,7 +164,10 @@ class SavePrepareMixin(RelationMixin, AliasMixin):
|
||||
):
|
||||
new_kwargs[field_name] = field.get_default()
|
||||
# clear fields with server_default set as None
|
||||
if field.server_default is not None and not new_kwargs.get(field_name):
|
||||
if (
|
||||
field.server_default is not None
|
||||
and new_kwargs.get(field_name, None) is None
|
||||
):
|
||||
new_kwargs.pop(field_name, None)
|
||||
return new_kwargs
|
||||
|
||||
|
||||
41
tests/test_model_methods/test_populate_default_values.py
Normal file
41
tests/test_model_methods/test_populate_default_values.py
Normal file
@ -0,0 +1,41 @@
|
||||
import databases
|
||||
import pytest
|
||||
import sqlalchemy
|
||||
from sqlalchemy import text
|
||||
|
||||
import ormar
|
||||
from tests.settings import DATABASE_URL
|
||||
|
||||
database = databases.Database(DATABASE_URL, force_rollback=True)
|
||||
metadata = sqlalchemy.MetaData()
|
||||
|
||||
|
||||
class BaseMeta(ormar.ModelMeta):
|
||||
database = database
|
||||
metadata = metadata
|
||||
|
||||
|
||||
class Task(ormar.Model):
|
||||
class Meta(BaseMeta):
|
||||
tablename = "tasks"
|
||||
|
||||
id: int = ormar.Integer(primary_key=True)
|
||||
name: str = ormar.String(
|
||||
max_length=255, minimum=0, server_default=text("Default Name"), nullable=False
|
||||
)
|
||||
points: int = ormar.Integer(
|
||||
default=0, minimum=0, server_default=text("0"), nullable=False
|
||||
)
|
||||
|
||||
|
||||
def test_populate_default_values():
|
||||
new_kwargs = {
|
||||
"id": None,
|
||||
"name": "",
|
||||
"points": 0,
|
||||
}
|
||||
result = Task.populate_default_values(new_kwargs)
|
||||
|
||||
assert result["id"] is None
|
||||
assert result["name"] == ""
|
||||
assert result["points"] == 0
|
||||
Reference in New Issue
Block a user