Django da yapınlan kayıtları log tablosunda tutmak için aşağıdaki gibi örneği kullanabilirsiniz.
from django.core import serializersfrom django.db import modelsfrom django.db.models.signals import post_save, pre_deletefrom main.middleware import get_current_userclass 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)
Türkiye lokasyon Web Hosting paketlerimiz için tıklayabilirsiniz.
Bilgi bankasını detaylı olarak incelediniz, fakat ihtiyacınız olan bilgiyi bulamıyorsanız,
Bir Destek Talebi Oluşturun.