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:
@ -73,16 +73,10 @@ class QuerySet:
|
||||
def _prepare_model_to_save(self, new_kwargs: dict) -> dict:
|
||||
new_kwargs = self._remove_pk_from_kwargs(new_kwargs)
|
||||
new_kwargs = self.model.substitute_models_with_pks(new_kwargs)
|
||||
new_kwargs = self._populate_default_values(new_kwargs)
|
||||
new_kwargs = self.model.populate_default_values(new_kwargs)
|
||||
new_kwargs = self.model.translate_columns_to_aliases(new_kwargs)
|
||||
return new_kwargs
|
||||
|
||||
def _populate_default_values(self, new_kwargs: dict) -> dict:
|
||||
for field_name, field in self.model_meta.model_fields.items():
|
||||
if field_name not in new_kwargs and field.has_default():
|
||||
new_kwargs[field_name] = field.get_default()
|
||||
return new_kwargs
|
||||
|
||||
def _remove_pk_from_kwargs(self, new_kwargs: dict) -> dict:
|
||||
pkname = self.model_meta.pkname
|
||||
pk = self.model_meta.model_fields[pkname]
|
||||
@ -300,6 +294,9 @@ class QuerySet:
|
||||
if pk and isinstance(pk, self.model.pk_type()):
|
||||
setattr(instance, self.model_meta.pkname, pk)
|
||||
|
||||
# refresh server side defaults
|
||||
instance = await instance.load()
|
||||
|
||||
return instance
|
||||
|
||||
async def bulk_create(self, objects: List["Model"]) -> None:
|
||||
|
||||
Reference in New Issue
Block a user