Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This should fix #49.
There is probably still improvements to be made to this PR but the initial approach seems to work for me. So I'm submitting this for review.
This PR basically adds the functionality of using
update_or_create
to theBulkUpdateManager
. Which has been requested for some time.The approach I took to accomplish this is to first separate all objects that have an id in a batch. Then make a select statement to check that they actually exist in the database. I update all of these objects using the already existing
bulk_update
method.The leftover objects didn't exist in the database, thus they need to be inserted. Since technically you can create an object and still get a collision the insertion of those objects take place with a custom crafted upsert.
So for instance if you have a field that is unique it will avoid a collision with that uniqueness and instead do an update instead of an insertion.