Überschreiben Sie die Speichermethode des Modells, wenn Sie etwas tun möchten, bevor Sie es in die Datenbank einfügen
class Event(models.Model):
class Meta:
unique_together = ('name', 'held_date')
id = models.CharField(primary_key=True, max_length=20)
name = models.CharField(max_length=8)
held_date = models.DateField()
def save(self, **kwargs):
u"""Erstellen Sie den Wert des Primärschlüssels unmittelbar vor dem Einfügen"""
self.id = "%s@%s" % (str(self.held_date), self.name)
super(Event, self).save(**kwargs)
Beim Überschreiben von save () von django wird es möglicherweise von einigen Manager-Methoden aufgerufen oder nicht.
create
get_or_create
update_or_create
bulk_create
This does *not* call save() on each of the instances
Es heißt überraschend.
Es gibt auch signals.pre_save
, aber es ist dasselbe wie dies zu tun, und das Überschreiben von" Speichern "ist expliziter.
Recommended Posts