This package adds stagers to assist in bulk operations on django models.
Project description
Django Stagers
This package provides a class Stager to stage model instances for bulk creation, update, or deletion at a later time. That way, you can focus on writing sync logic without worrying about keeping track of model instances or their unique identifiers.
Installation
Install using pip:
pip install django-stagers
Import the Stager class:
from django_stagers import Stager
Usage
Instantiate a Stager class (optionally with a type for better type-hinting) and then call the create() function to add models. When any of the three staging methods create(), delete() or update() are called, though, the corresponding action is not actually taken in the database until the user calls commit(), at which point all of the staged actions are run in bulk fashion.
from django_stagers import Stager
foo_stager = Stager[Foo](queryset=Foo.objects.all(), key="id")
foo_stager.create(Foo(attr="abc"))
foo_stager.create(Foo(attr="def"))
...
foo_stager.commit()
The output of the operation will look something like this:
Sat Nov 2 2024 2:36:37 PM [INFO ]: Committing staged Foo instances.
Sat Nov 2 2024 2:36:37 PM [INFO ]: Created 37 Foo instances.
Access Existing Instances
Another key feature of stagers is that they keep track of existing model instances in the database using the existing attribute. This way, it is easy to check whether a new object is already tracked in the django database or has already been staged previously.
for serialized_foo in serialized_foos:
if existing_foo := foo_stager.existing.get(serialized_foo['key']):
foo_stager.update(serialized_foo['key'], 'attr', serialized_foo['attr'])
else:
foo_stager.create(Foo(**serialized_foo))
...
foo_stager.commit()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_stagers-0.0.10.tar.gz.
File metadata
- Download URL: django_stagers-0.0.10.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb0f94e0a44008c2d94d756530998a5a22d3b82989961cc172e4c81c6173f13f
|
|
| MD5 |
7933ff94bb0b0bc6dfb412e74ab90fe1
|
|
| BLAKE2b-256 |
5d8c2843e8ee022c78e5fea201fbb446ae0f7494de9be3930fb6c04d6deaa81e
|
File details
Details for the file django_stagers-0.0.10-py3-none-any.whl.
File metadata
- Download URL: django_stagers-0.0.10-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66fb9cef667099a21cff760712942c772b8ac0e4e5d3cd18bd4136c23b788bd7
|
|
| MD5 |
b11bc85abf8fdb3c69a2ad6d9275e416
|
|
| BLAKE2b-256 |
05273cbfe880503c9d45594e81ca28c3fc0199dbde266ffc8eae907fdf97693d
|