Существует допустим две модели Product и Log
Product с обычными полями: категория, название, цена и прочее.
Log такая:
LOG_EVENT_CHOICES = (
('added_qty', 'Добавлено количество'),
('changed_qty', 'Изменено количество'),
('changed_price', 'Изменена цена'),
)
class Log(models.Model):
product = models.ForeignKey(Product, on_delete=models.PROTECT, verbose_name="Изделие")
event = models.CharField(max_length=30, choices=LOG_EVENT_CHOICES, default='added_qty', verbose_name="Событие")
description = models.CharField(max_length=100, blank=True)
created = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Дата создания")
staff = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name="Инициатор")
qty = models.IntegerField(default=0, verbose_name="Количество")
И вот кто-то на продукте меняет цену. Чтобы поймать этот момент, я в модели Product переопределяю метод save():
def save(self, *args, **kwargs):
if self.id: # сразу будет отсекать новые записи у которых ещё нет id
# запись события смены цены
orig_price = float(Product.objects.get(id=self.id).price)
if orig_price != float(self.price):
log = Log()
log.product = self
log.event = 'changed_price'
log.description = 'old: ' + str(orig_price) + ' , new: ' + str(self.price)
log.qty = self.qty
log.staff = КАК СЮДА ПОЛУЧИТЬ ТЕКУЩЕГО ЮЗЕРА???
log.save()
Как записать текущего юзера в переменную log.staff?