Как мне получить доступ к внутреннему классу унаследованного класса и изменить его? - PullRequest
1 голос
/ 20 июля 2009

Итак, у меня есть класс, в частности, это:

class ProductVariantForm_PRE(ModelForm):
    class Meta:
        model = ProductVariant
        exclude = ("productowner","status")
    def clean_meta(self):

        if len(self.cleaned_data['meta']) == 0:
            raise forms.ValidationError(_(u'You have to select at least 1 meta attribute.'))

        for m in self.cleaned_data['meta']:
            for n in self.cleaned_data['meta']:
                if m != n:
                    if m.name == n.name:
                        raise forms.ValidationError(_(u'You can only select 1 meta data of each type. IE: You cannot select 2 COLOR DATA (Red and Blue). You can however select 2 different data such as Shape and Size.'))
        return self.cleaned_data['meta']

Я хочу расширить этот класс (ModelForm), и поэтому у меня есть класс B.

Класс B будет выглядеть так:

class B(ProductVariantForm_PRE):

Как я могу получить доступ к внутреннему классу "Meta" в классе B и изменить поле исключения?

Спасибо!

1 Ответ

4 голосов
/ 20 июля 2009

Посмотрите документацию Django для наследования модели здесь . С этой страницы:

Когда абстрактный базовый класс создано, Django делает любую мету внутреннюю класс, который вы объявили в базовом классе доступно как атрибут. Если ребенок класс не объявляет свою собственную мету класс, он унаследует родительский Мета. Если ребенок хочет продлить Мета-класс родителя, он может быть подклассом Это. Например:

class CommonInfo(models.Model):
    ...
    class Meta:
        abstract = True
        ordering = ['name']

class Student(CommonInfo):
    ...
    class Meta(CommonInfo.Meta):
        db_table = 'student_info'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...