Heim  >  Artikel  >  Backend-Entwicklung  >  Wie überschreibe ich die Django-Speichermethode für bestimmte Modellszenarien?

Wie überschreibe ich die Django-Speichermethode für bestimmte Modellszenarien?

Linda Hamilton
Linda HamiltonOriginal
2024-10-22 16:28:02151Durchsuche

How to Override Django Save Method for Specific Model Scenarios?

Django: Überschreiben der Speichermethode für bestimmte Modellszenarien

In Situationen, in denen die Speichermethode eines Django-Modells basierend auf bestimmten geändert werden muss B. um festzustellen, ob ein Bild aktualisiert oder nur die Beschreibung geändert wurde, kann ein benutzerdefinierter Ansatz verwendet werden.

Eine Technik beinhaltet die Verwendung einer Eigenschaft und eines Flags:

<code class="python">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

    def get_image(self):
        return self._image

    image = property(get_image, set_image)

    def save(self, *args, **kwargs):
        if getattr(self, '_image_changed', True):
            # Logic for image rescaling
        super(Model, self).save(*args, **kwargs)</code>

Dieser Ansatz Stellt sicher, dass die Bildneuskalierungslogik nur dann ausgelöst wird, wenn das Flag „_image_changed“ auf „True“ gesetzt ist, was anzeigt, dass das Bild geändert wurde.

Das obige ist der detaillierte Inhalt vonWie überschreibe ich die Django-Speichermethode für bestimmte Modellszenarien?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn