Python 在超类属性中添加帮助_文本

Python 在超类属性中添加帮助_文本,python,django,Python,Django,假设我有一个名为MySuper的模型: class MySuper(models.Model): some_attr = models.CharField(max_length=128) 我有两个子类继承自这个模型,分别称为MySub1和MySub2 我需要在某些属性中添加帮助\u文本,但在每个子类中必须不同。有没有办法做到这一点 class MySub1(MySuper): # ... # add help_text='Help text of some_attr i

假设我有一个名为MySuper的模型:

class MySuper(models.Model):
    some_attr = models.CharField(max_length=128)
我有两个子类继承自这个模型,分别称为
MySub1
MySub2

我需要在
某些属性中添加
帮助\u文本
,但在每个子类中必须不同。有没有办法做到这一点

class MySub1(MySuper):
    # ...
    # add help_text='Help text of some_attr inside MySub1'

class MySub2(MySuper):
    # ...
    # add help_text='Help text of some_attr inside MySub2'

我需要对两个图像大小不同的相同模型执行此操作。也许有一些很好的方法可以概括这一点,但对于两个问题,我的答案可以。首先在应用程序中创建一个名为forms.py的文件

from django import forms
from .models import FeaturedProduct, ShopProduct

class FeaturedProductForm(forms.ModelForm):
    class Meta:
        model = FeaturedProduct
    ihelp = "Image should be 500x220."
    src = forms.ImageField(help_text=ihelp,required=False)

class ShopProductForm(forms.ModelForm):
    class Meta:
        model = FeaturedProduct
    ihelp = "Image should be 100x100."
    src = forms.ImageField(help_text=ihelp,required=False)
请注意,
required
默认为true,即使您的模型上有
null=true,blank=true
。然后在admin.py中定义
ModelAdmin
s,如下所示:

from .forms import FeaturedProductForm, ShopProductForm

class ShopProductAdmin(admin.ModelAdmin):
  form = ShopProductForm

class FeaturedProductAdmin(admin.ModelAdmin):
  form = FeaturedProductForm
我遗漏了一些导入和整个
admin.site.register
废话。如果你需要更多信息,请告诉我。
表单字段的完整列表可在此处找到:


不必完全重新定义字段即可实现此目的的另一种方法是:

class MySub1(MySuper):
    pass

MySub1._meta.get_field('some_attr').help_text = 'sub1 help text'


class MySub2(MySuper):
    pass

MySub2._meta.get_field('some_attr').help_text = 'sub2 help text'