Поле ManyToMany не сохраняется при использовании администратора Django

У меня странная проблема, и я надеюсь, что кто-то здесь сможет пролить свет на .

Я переопределяю метод save () модели, чтобы добавить некоторые значения в поле ManyToMany после запуска super (). Моя проблема в том, что когда я сохраняю в админке Django, значения, кажется, добавляются к отношениям, но затем снова становятся пустыми.

Однако если я делаю это из оболочки manage.py , она работает без проблем .

I ' Мы помещаем туда два оператора печати, и они производят один и тот же результат независимо от того, запускаю ли я его через администратор Django или через оболочку.

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 )

Это результат выполнения операторов print :

====  BEFORE SAVE: []
====  AFTER SAVE: [<StoreHoliday: 10 Mar 2010, Chuck Norris birthday (Closed)>]

Есть ли у кого-нибудь предложения по поводу того, что может быть причиной этого?

Изменить: Все ручные изменения отношения m2m в save (), кажется, отменяются Django при сохранении через интерфейс администратора. Связано ли это с тем, как он обрабатывает форму?

11
задан kb. 1 June 2011 в 11:22
поделиться