Categories
Python Answers

How to override save for model with Python Django?

Spread the love

Sometimes, we want to override save for model with Python Django.

In this article, we’ll look at how to override save for model with Python Django.

How to override save for model with Python Django?

To override save for model with Python Django, we add our own save method to the model class.

For instance, we write

class Model(model.Model):
    _image=models.ImageField(upload_to='folder')
    thumb=models.ImageField(upload_to='folder')
    description=models.CharField()

    def set_image(self, val):
        self._image = val
        self._image_changed = True

        # Or put whole logic in here
        small = rescale_image(self.image,width=100,height=100)
        self.image_small=SimpleUploadedFile(name,small_pic)

    def get_image(self):
        return self._image

    image = property(get_image, set_image)

    def save(self, *args, **kwargs):
        if getattr(self, '_image_changed', True):
            small=rescale_image(self.image,width=100,height=100)
            self.image_small=SimpleUploadedFile(name,small_pic)
        super(Model, self).save(*args, **kwargs)

to add the save method into the Model class.

In it, we call rescale_image to rescale an image,

Then we create a SimpleUploadedFile object from the image.

And then we call save to save the Model instance with the parent class’ save method.

Conclusion

To override save for model with Python Django, we add our own save method to the model class.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *