fix server_default not setting value in defaults, pop server_default fields if set to None, add tests, update docs

This commit is contained in:
collerek
2020-10-28 15:34:40 +01:00
parent 858fbce67f
commit 29d04887b1
8 changed files with 150 additions and 17 deletions

View File

@ -49,6 +49,16 @@ class ModelTableProxy:
model_dict.pop(field, None)
return model_dict
@classmethod
def populate_default_values(cls, new_kwargs: Dict) -> Dict:
for field_name, field in cls.Meta.model_fields.items():
if field_name not in new_kwargs and field.has_default(use_server=False):
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):
new_kwargs.pop(field_name, None)
return new_kwargs
@classmethod
def get_column_alias(cls, field_name: str) -> str:
field = cls.Meta.model_fields.get(field_name)