在我的django应用程序中有几个模型。其中一些来自models.Model,一些来自django-hvad的可翻译模型。我想记录它们上的每个保存/删除/更新操作。我知道管理操作的标准django记录器,但它们过于简短和冗长,无法满足我的需要。
一般来说,实现这一目标的一种常见方法是使用这些操作定义超类并对每个模型进行扩展。这不是我的情况,因为我的一些模型是可译的,而有些则不是。
第二种方法是方面/装饰师。我想python/django一定有这样的东西,但我不知道具体是什么:)
请给我提供最合适的方法来做这个日志记录。谢谢!
发布于 2016-06-26 18:37:32
你可以为你的模型写一个混音。
import logging
class LogOnUpdateDeleteMixin(models.Model):
pass
def delete(self, *args, **kwargs):
super(LogOnUpdateDeleteMixin, self).delete(*args, **kwargs)
logging.info("%s instance %s (pk %s) deleted" % (str(self._meta), str(self), str(self.pk),) # or whatever you like
def save(self, *args, **kwargs):
super(LogOnUpdateDeleteMixin, self).save(*args, **kwargs)
logging.info("%s instance %s (pk %s) updated" % (str(self._meta), str(self), str(self.pk),) # or whatever you like
class Meta:
abstract = True现在就用在你的模型里吧。
class MyModel(LogOnUpdateDeleteMixin, models.Model):
...
# Update/Delete actions will write to log. Re-use your mixin as needed in as many models as needed.你可以一次又一次地重复使用这个混合物。按照您的意愿执行转换,在您的模型中设置一些属性,并在mixin中检查它们。
https://stackoverflow.com/questions/38041310
复制相似问题