Following is my model:
class Product(models.Model):
product_title = models.CharField(max_length=100, null=False,
verbose_name='Product title')
product_description = models.TextField(max_length=250,
verbose_name='Product description')
product_qty = models.IntegerField(verbose_name='Quantity')
product_mrp = models.FloatField(verbose_name='Maximum retail price')
product_offer_price = models.FloatField(verbose_name='Selling price')
I wanted to have a validation for product_offer_price field before save for which I had posted a QUESTION and it was answered with the working solution.
Validation needed is:
if product_offer_price > product_mrp:
raise ValidationError
Now the solution to above question works perfectly for the admin forms.
But, I have implemented django-import-export, in which I am importing Product Data in bulk in admin, and I need similar validation during bulk import.
How to achieve this?
Well, here was a little research process.
And finally I got it.
The trouble is avoiding ProductForm in import-export library. Inside library import invoke method save() of instance, but if we raise ValidationError in Model (not in Form) = 500 with DEBUG = False, and traceback page with DEBUG = True. So we should use "before_import" method in import_export Resource and "clean" method in django.forms Form.
admin.py
forms.py
models.py