23 Ağustos 2018 18:24

Muslu Y.

Django

Django da yapılan tüm kayıtları Log tablosunda tutmak

Anasayfa

Django

Django da yapılan tüm kayıtları Log tablosunda tut...

from django.core import serializers
from django.db import models
from django.db.models.signals import post_save, pre_delete
from main.middleware import get_current_user
class Loglar(models.Model):
 user = models.ForeignKey(User, verbose_name="Kullanıcı", on_delete=models.CASCADE, blank=True, null=True)
 model = models.CharField(max_length=30, default="", blank=True, null=True)
 modelid = models.CharField(max_length=250, default="", blank=True, null=True)
 status = models.CharField(max_length=30, default="", blank=True, null=True)
 note = models.TextField(default="", blank=True, null=True)
 create_date = models.DateTimeField("Kayıt Zamanı", auto_now_add=True)
 class Meta:
 verbose_name = "İşlem" verbose_name_plural = "İşlem Kayıtları"def onPostSave(sender, **kwargs):
 try:
 if not kwargs['instance']._meta.object_name in ['LogEntry', 'Loglar']: ## Log işlemlerinde sadece bizim tablolar var ise 

model_instance = sender.objects.get(id=kwargs['instance'].id)
 raw_data = serializers.serialize('python', [model_instance])
 islem_turu = 'Yeni Kayıt' if kwargs['created'] else 'Kayıt Güncelleme' kullanici = User.objects.get(username=get_current_user())
 model = modelid = note = "" for d in raw_data:
 model = d['model']
 modelid = d['pk']
 note = dict(d['fields'])
 log_kayit = Loglar(user=kullanici, status=islem_turu, model=model, modelid=modelid, note=note)
 log_kayit.save()
 except:
 passpost_save.connect(onPostSave)

Django

hakkında diğer konular

Makdos Bilişim Teknolojileri 2015 - 2025