Skip to content

954-Ivory/django_bulk_hook_manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

django_bulk_hook_manager

This package can help you to hook some function on bulk operations.

Installation

Not yet packaged to pip.

Usage:

# hooks.py

def demo_hook1(queryset, res, *args, **kwargs):
    pass


def demo_hook2(queryset, res, *args, **kwargs):
    pass
# models.py

from django.db import models
from django_bulk_hook_manager.managers import BulkHookManager

from hooks import demo_hook1, demo_hook2


class DemoModel(models.Model):
    # Just hook `demo_hook1` on `update`:
    objects = BulkHookManager('update', demo_hook1)

    # Hook `demo_hook1` on `update` and `bulk_update`:
    objects = BulkHookManager(
        ['update', 'bulk_update'], demo_hook1
    )

    # Hook different functions on different original functions: 
    objects = BulkHookManager({
        'update': demo_hook1,
        'bulk_update': demo_hook2
    })

    demo_field = models.IntegerField()
# demo.py
import os
import django

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'YourProjectName.settings')
django.setup()

if __name__ == '__main__':
    from demo.models import DemoModel
    
    for i in range(20):
        x = i % 4
        DemoModel.objects.create(x=x)

    demo_model = DemoModel.objects.filter(x=3)

    demo_model.update(x=2)  # Will call the hook function in this.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages