一个django应用程序,用于为管理中的模型添加对象工具

dj-obj-update的Python项目详细描述


https://travis-ci.org/crccheck/dj-obj-update.svg?branch=master

dj-obj-update是一个模块,在更新 对象:

  1. 只有在发生更改时才进行保存
  2. 记录更改的内容(记录器名称为obj_update,仅输出debug)

安装

pip install dj-obj-update

用法

更新对象

from obj_update import obj_update

new_data = {
    'flavor': 'chocolate',
}
for obj in queryset:
    obj_update(obj, new_data)

更新对象的干运行

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, update_fields=[])

替代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/stable/ref/models/querysets/#update-or-create

处理auto_now字段

默认情况下,dj-obj-update在保存时构造一个update_fields。 这意味着像主键auto_now和^{tt8}这样的字段$ 可能无法保存。如果需要,应该设置update_fields=None。 用法与Django相同:

https://docs.djangoproject.com/en/stable/ref/models/instances/#specifying-which-fields-to-save

记录更改

使用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)

使用json日志,您将得到如下消息:

{"message": "[text hello->hello2]", "model": "FooModel", "pk": 1, "changes": {"text": {"old": "hello", "new": "hello2"}}}

使用普通的记录器,您仍然可以获得输出,但它没有那么多信息:

[text hello->hello2]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何提高我的软件项目的速度?   java将Jetty嵌入JavaSE项目   数组中的java重复字符   java我的Shell排序没有按预期工作,我需要一些帮助来找出我做错了什么   java如何在JBoss EAP6/AS7中应用先过滤后安全约束   java使用一个随机运算符来处理多个变量   java为什么我不能在文件中写我的二叉树?   java应用程序不会在Eclipse emulator上运行   我第一次尝试制作一个简单的基于瓷砖的java游戏   java为TermVectors安装Solr修补程序   java无法将更新的对象值从客户端发送到服务器,服务器读取不存在的值   Azure,java sdk,使用ARM模板部署无法转换参数文件   是否有一个Java等价于空合并运算符(?)在C#?   java如果只初始化了超类对象,是否可以调用特定于子类的方法?   向类文件传递值时出现java NullPointerException   java模不起作用   java Android TranslateAnimation动态更新布局的大小   数据结构如何在java中实例化队列对象?   java如果用户选择一些随机的相机应用程序,如何在安卓中正确处理相机意图?