2012-06-07 37 views
13

ModelForms'ı forma alan ekleyerek ana amacına genişletmek istiyorum.Alt Sınıflandırma Django ModelForms

# Basic listing 
class BasicForm(ModelForm): 
    class Meta: 
     model = Business 
     fields = ('category', 'city', 'name', 'address', 
       'slogan', 'phone', 'website', 'email') 

class SocialForm(BasicForm): 
    class Meta: 
     model = Business 
     fields = ('facebook','twitter') 

o bile işe misiniz: Ben bir örnekle görmek daha kolay olduğunu düşünüyorum? Ya da SocialForm'daki diğer alanlardan BasicForm'u silmek mi?

Bunu yapmanın doğru yolu nedir?

cevap

36

Bu geç bir cevaptır ama böyle iç Meta sınıf alt sınıf dikkat etmek istedik:

class SocialForm(BasicForm): 
    class Meta(BasicForm.Meta): 
     fields = BasicForm.Meta.fields + ('facebook', 'twitter') 

Eğer model = Business tanımını tekrarlamak zorunda değilsiniz Bu şekilde, ve diğer MetaBasicForm'a ekleyebileceğiniz özellikler otomatik olarak SocialForm tarafından devralınır.

Referans olarak, bu yaklaşımla ilgili Django documentation.

İlgili konular