Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Product(models.Model):
- name = models.CharField(max_length=100)
- price = models.PositiveIntegerField()
- tax_rate = models.PositiveIntegerField()
- display_price = models.PositiveInteger()
- inputed_by = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.SET_NULL)
- updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.SET_NULL)
- def save_model(self, request, obj, form, change):
- update_fields = []
- if not obj.pk:
- obj.inputed_by = request.user
- elif change:
- obj.updated_by = request.user
- if form.initial['tax_rate'] != form.cleaned_data['tax_rate']:
- update_fields.append('tax_rate')
- if form.initial['price'] != form.cleaned_data['price']:
- update_fields.append('price')
- obj.save(update_fields=update_fields)
- super().save_model(request, obj, form, change)
- @receiver(post_save, sender=Product, dispatch_uid="update_display_price")
- def update_display_price(sender, **kwargs):
- created = kwargs['created']
- instance = kwargs['instance']
- updated = kwargs['update_fields']
- checklist = ['tax_rate', 'price']
- if created:
- instance.display_price = instance.price+instance.tax_rate
- instance.save()
- elif set(checklist).issubset(updated):
- instance.display_price = instance.price+instance.tax_rate
- instance.save()
Add Comment
Please, Sign In to add comment