Джанго - Самоанализ модели Джанго в методе, реализованном в ее абстрактном предке? - PullRequest
0 голосов
/ 15 июля 2010

В django я хотел бы сослаться на класс, метод которого вызывается, где сам метод реализован в его абстрактном предке .

class AbstractFather(models.Model):
    class Meta:
        abstract = True
    def my_method(self):
        # >>> Here <<<

class Child(AbstractFather):
    pass

Я ищусделать что-то вроде:

isinstance(instance, Child):

Конечно, в my_method я не могу знать, какая дочерняя модель была названа априори.

Ответы [ 2 ]

0 голосов
/ 15 июля 2010

Тривиально и работает:

class AbstractFather(models.Model):
    class Meta:
        abstract = True
    def my_method(self,some_instance):
        print isinstance(some_instance,self.__class__)

class Child(AbstractFather):
    pass
0 голосов
/ 15 июля 2010

Почему ты так говоришь?Вы абсолютно можете.AbstractFather - это абстрактная модель, поэтому она никогда не будет реализована, поэтому вы всегда можете быть уверены, что любой вызов my_method является экземпляром подкласса.Синтаксис, который вы даете, должен работать.

Редактировать Так с чем именно вы пытаетесь сравнить?self в my_method всегда будет релевантным экземпляром, а его класс всегда будет конкретным подклассом AbstractFather.Что нужно проверить?

...