Django: переопределить функцию save () абстрактной модели - PullRequest
0 голосов
/ 02 марта 2011

Я попытался обойти функцию save () в абстрактной модели и получаю сообщение об ошибке

Manager isn't accessible via Entry instances

Так что, если возможно, как переопределить функцию сохранения в абстрактной модели. Модель, которая выходит из этого Entry

Вот мой код модели:

class EntryBlog(EntryAbstractClass):
    groups = models.ManyToManyField(group, null=True, blank=True)    

    def save(self, *args, **kwargs):
        if self.featured:
            self.__class__().objects.all().update(featured = False)
        super(EntryBlog, self).save(*args, **kwargs)

    class Meta:
        abstract = True

(Для тех, кто знаком, я расширяю модель Entry на блоге zinnia, но не думаю, что это актуально)

1 Ответ

4 голосов
/ 02 марта 2011

self.__class__().objects должно быть self.__class__.objects.

См. Примечания о получении объектов: http://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-objects

Менеджеры доступны только через классы модели, а не из экземпляров модели, чтобы обеспечить разделение между операциями "уровня таблицы" и операциями "уровня записи".

...