support(bulk-create): add raise_error flag when bulk-create empty models (#853)

* add raise_error flag when bulk-create empty models

* if not raise_error, return

* fix ut cov

* raise exception when it's empty
This commit is contained in:
Ethon
2022-09-28 18:54:49 +08:00
committed by GitHub
parent 3cb221bdde
commit fd0f40afd0
2 changed files with 7 additions and 0 deletions

View File

@ -1134,6 +1134,10 @@ class QuerySet(Generic[T]):
:param objects: list of ormar models already initialized and ready to save. :param objects: list of ormar models already initialized and ready to save.
:type objects: List[Model] :type objects: List[Model]
""" """
if not objects:
raise ModelListEmptyError("Bulk create objects are empty!")
ready_objects = [obj.prepare_model_to_save(obj.dict()) for obj in objects] ready_objects = [obj.prepare_model_to_save(obj.dict()) for obj in objects]
# don't use execute_many, as in databases it's executed in a loop # don't use execute_many, as in databases it's executed in a loop

View File

@ -286,6 +286,9 @@ async def test_bulk_create():
completed = await ToDo.objects.filter(completed=True).all() completed = await ToDo.objects.filter(completed=True).all()
assert len(completed) == 2 assert len(completed) == 2
with pytest.raises(ormar.exceptions.ModelListEmptyError):
await ToDo.objects.bulk_create([])
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_bulk_create_json_field(): async def test_bulk_create_json_field():