2012-02-05 64 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/