2012-02-05 63 views
2

比方说,我有一个名为MySuper模型:超类中的属性添加help_text

class MySuper(models.Model): 
    some_attr = models.CharField(max_length=128) 

我有两个子类,从这个模型继承,称为MySub1MySub2

我需要添加help_textsome_attr,但在每个子类中必须不同。有没有办法做到这一点?

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' 

回答

1

另一种方式来实现这一目标,而无需完全重新定义字段将是:

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' 
+0

解决我的问题! – juliomalegria 2012-02-09 18:28:27

1

我需要为具有不同图像尺寸的两个相同型号执行此操作。可能有一些很好的方法来推广这一点,但对于两个项目,我的答案会很好。首先在您的应用程序中创建一个名为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默认为真,即使你有你的模型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无稽之谈。让我知道你是否需要更多信息。的forms.FIELDS完整列表可以在这里找到:

https://docs.djangoproject.com/en/dev/ref/forms/fields/