campo @ManyToMany não é salvo ao usar o Django admin
Estou com um problema estranho, que espero que alguém aqui possa esclarece
Estou substituindo o método save () de um modelo para adicionar alguns valores a um campo ManyToMany após executar super (). Meu problema é que, quando estou salvando no Django admin, os valores parecem ser adicionados ao relacionamento, mas ficam vazios novament
Se eu fizer isso a partir demanage.py shell
funciona sem problemas.
Coloquei duas declarações de impressão lá e elas produzem exatamente a mesma saída, independentemente de eu estar executando através do Django admin ou via shel
class Store(models.Model):
holidays = models.ManyToManyField(StoreHoliday, blank=True)
copy_holidays_from = models.ForeignKey('Store', blank=True, null=True)
def save(self):
print '==== BEFORE SAVE:', self.holidays.all()
super(Store, self).save()
self.copy_holidays()
print '==== AFTER SAVE:', self.holidays.all()
def copy_holidays(self):
if self.pk and self.copy_holidays_from:
self.holidays.clear()
for h in self.copy_holidays_from.holidays.all():
self.holidays.add( h )
Esta é a saída doprint
afirmações
==== BEFORE SAVE: []
==== AFTER SAVE: [<StoreHoliday: 10 Mar 2010, Chuck Norris birthday (Closed)>]
Alguém tem alguma sugestão sobre o que pode estar causando isso?
Editar Todas as alterações manuais na relação m2m em save () parecem ser descartadas pelo Django ao salvar através da interface de administração. Isso está relacionado a como ele processa o formulário?