Si por "cada vez que se crea un nuevo objeto héroe" que quiere decir "cada vez que un registro héroe se crea en la base de datos," pues no, usted no quiere hacer esto en el método __init__
, ya que se llama en cualquier momento que se crea un objeto Hero en Python, incluso cuando acaba de obtener un registro existente de la base de datos.
para hacer lo que desea, puede utilizar Django post_save signal, comprobando en la devolución de llamada señal de que el parámetro created
palabra clave es verdadera y la realización de la lógica "en la creación" de ser así.
Alternativamente, y más sencillo y natural en ciertos casos, puede anular el método de héroe save()
de la siguiente manera:
def save(self, *args, **kwargs):
if not self.pk: # object is being created, thus no primary key field yet
self.name += " is a hero"
super(Hero, self).save(*args, **kwargs)
Tenga en cuenta que el método de Djagno bulk_create
saltará activación o bien la señal post-guardar o llamando save
.
Esto casi nunca es lo que quiere. Describe tu problema real. –
@ IgnacioVazquez-Abrams Tengo que actualizar otro modelo que se basa en la entrada agregada de mi clase 'Hero'. – Joey
@Joey Use [signals] (https://docs.djangoproject.com/en/1.4/topics/signals/) en su lugar. – Dougal