Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_stagers-0.0.6.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_stagers-0.0.6-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file django_stagers-0.0.6.tar.gz.

File metadata

  • Download URL: django_stagers-0.0.6.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for django_stagers-0.0.6.tar.gz
Algorithm Hash digest
SHA256 3ea887adb98e6272154628dd47a12d47b403e21d58d30aac1e9eb50d35ec19c3
MD5 ba5dd6af0c2ed0ab0340d3ba0b2247d3
BLAKE2b-256 f07e8d6e3ea2c403294aab90f42700ae5e522d9460ef14ac4932136b05db7cb6

See more details on using hashes here.

File details

Details for the file django_stagers-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: django_stagers-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 4.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for django_stagers-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 06314e5d4a0e2eb4e8c549d5a31851e4d931dba87cd167a71946032549bcc581
MD5 ac8b8d6a8ca6b313c6f0f417a523e367
BLAKE2b-256 b3e202116f97c414ebc48322fba5afc27d3dab6d2a90dd2d44540b14b5f7a84e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page