Ich habe ein Produkt-Stock-Modell wie unten angegeben.django - logging edit event - muss ID des angemeldeten Benutzers
Ich muss die Update-Aktivität für dieses Modell protokollieren, zusammen mit der ID des Benutzers, der es aktualisiert hat.
ACTIONS=(('EC','Edit Category'),
('EG','Edit Group'),
('EP','Edit Product'),
('ES','Edit Stock'))
class MyLog(models.Model):
user=models.ForeignKey(auth.models.User, blank=False)
action= models.CharField(max_length=2, choices=ACTIONS, null=False,blank=False)
date=models.DateTimeField(blank=False, auto_now=True)
data = JSONField()
Ich habe den folgenden Code zum Stock-Modell hinzugefügt.
def __init__(self, *args, **kwargs):
super(Stock, self).__init__(*args, **kwargs)
if self.pk != None :
self.__important_fields = ['product','date', 'quantity', 'ttype', ]
for field in self.__important_fields:
setattr(self, '__original_%s' % field, getattr(self, field))
field_name='__original_%s' % field
def save(self, *args, **kwargs):
if self.pk != None :
print("Editing")
flag=False
log=MyLog(user=?,action='ES')
log.data=[]
for field in self.__important_fields:
original=getattr(self, '__original_%s' % field)
if original != getattr(self, field):
flag=True
log.data.append({field : str(original)})
if flag:
log.save()
else:
print("Adding")
super(Stock, self).save(*args, **kwargs)
Dies funktioniert, wenn ich hart Code ein Benutzerobjekt in die Zeile log = MyLog (user = ?, action = 'ES').
Ich muss die ID des Benutzers protokollieren, der diesen Bearbeitungsvorgang ausgeführt hat.
Wie kann ich das erreichen?
Danke.
Sie die lo geben müssen in einer Benutzer-ID aus einer Ansicht –
Wie mache ich das? – art06