如何访问并修改继承类的内部类?

1 投票
1 回答
1465 浏览
提问于 2025-04-15 13:02

我有一个类,具体来说,就是这个:

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']

我想扩展这个类(一个模型表单),所以我创建了一个类 B。

类 B 看起来是这样的:

class B(ProductVariantForm_PRE):

我该如何在类 B 中访问内部类 "Meta",并修改它的排除字段呢?

谢谢!

1 个回答

4

你可以查看Django的文档,了解模型继承的相关内容,链接在这里。在那一页上有这么说:

当你创建一个抽象基类时,Django会把你在基类中定义的任何Meta内部类作为一个属性提供出来。如果子类没有自己定义Meta类,它就会继承父类的Meta。如果子类想要扩展父类的Meta类,它可以在自己的Meta类中继续继承。比如:

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

class Student(CommonInfo):
    ...
    class Meta(CommonInfo.Meta):
        db_table = 'student_info'

撰写回答