A Django app for adding object tools for models in the admin
Project description
dj-obj-update is a module that helps you do two things while updating an object:
Only do a save if something changed
Log what changed (the logger name is obj_update and only outputs DEBUG)
Installation
pip install dj-obj-update
Usage
Updating an object
from obj_update import obj_update new_data = { 'flavor': 'chocolate', } for obj in queryset: obj_update(obj, new_data)
Dry run updating an object
from obj_update import obj_update logger.setLevel(logging.DEBUG) # see "Logging changes" below new_data = { 'flavor': 'chocolate', } for obj in queryset: obj_update(obj, new_data, save=False)
Replacement for update_or_create
from obj_update import obj_update_or_create choice, created = obj_update_or_create( Choice, question=question, defaults={'choice_text': 'Flour or corn?'}, )
https://docs.djangoproject.com/en/2.0/ref/models/querysets/#update-or-create
Logging changes
Using python-json-logger:
import logging from pythonjsonlogger.jsonlogger import JsonFormatter logger = logging.getLogger('obj_update') handler = logging.FileHandler('log/my_obj_changes.log') handler.setFormatter(JsonFormatter()) logger.addHandler(handler) logger.setLevel(logging.DEBUG)
With JSON logging, you’ll get messages like:
{"message": "[text hello->hello2]", "model": "FooModel", "pk": 1, "changes": {"text": {"old": "hello", "new": "hello2"}}}
With a normal logger, you’ll still get output, but it won’t have as much information:
[text hello->hello2]
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
dj-obj-update-0.3.0.tar.gz
(3.1 kB
view hashes)
Built Distribution
Close
Hashes for dj_obj_update-0.3.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5aee1ef9142a477361abe3b228580fdfc25b352279e7a3d55167d7b560d3765 |
|
MD5 | 9f1b102cfaf4422fa42eb87ace1c9608 |
|
BLAKE2b-256 | 218e3a45770ee3a8b7589709bdebc6ce344b2e49afa039da366e87828e8a8677 |