Подыму некропост.
Появилась внезапно потребность в уже существующем проекте сделать таблицу с историей балансов дилеров.
На коленке наклепал модель:
class Dealer_Balance(models.Model):
dealer = models.ForeignKey('dealers.Dealer', verbose_name=u'Дилер', related_name='balance_deal_a')
old_balance = models.DecimalField(max_digits=12, decimal_places=2, verbose_name=u'Баланс был',)
new_balance = models.DecimalField(max_digits=12, decimal_places=2, verbose_name=u'Баланс стал',)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'Кто изменил', related_name='d_bal_add')
entry_date = models.DateTimeField(auto_now_add=True, blank=True,verbose_name=u'Дата изменения')
Немного погуглив, сделал прямо и жЫрно
:
def save(self, *args, **kwargs):
old_balance = Dealer.objects.get(id=self.id).balance
new_balance = self.balance
if old_balance != new_balance:
a = get_current_user()
d = Dealer_Balance(dealer = self, old_balance = old_balance, new_balance=new_balance, owner=a)
d.save()
super(Dealer, self).save(*args, **kwargs)
Миддлварь для пользователя:
from threading import local
_user = local()
class CurrentUserMiddleware(object):
def process_request(self, request):
_user.value = request.user
def get_current_user():
return _user.value
Ну и вот мучаюсь сейчас вопросом - заливать на сервер или переделать на сигналах?