2012-06-07 10 views
13

मैं फॉर्म में फ़ील्ड जोड़ने के मुख्य उद्देश्य के साथ मॉडलफॉर्म का विस्तार करना चाहता हूं। मुझे लगता है कि उदाहरण के साथ देखना आसान है:सबक्लासिंग डीजेगो मॉडलफॉर्म

# 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') 

क्या यह भी काम करेगा? या क्या यह सोशलफॉर्म में बेसिकफॉर्म से अन्य फ़ील्ड को मिटा देगा?

ऐसा करने का सही तरीका क्या है?

उत्तर

36

यह एक देर से जवाब है, लेकिन मैं ध्यान दें कि आप आंतरिक Meta वर्ग इस तरह उपवर्ग कर सकते हैं चाहता था:

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

इस तरह आप model = Business परिभाषा को दोहराने की जरूरत नहीं है, और किसी अन्य Meta गुण जो आप BasicForm में जोड़ सकते हैं स्वचालित रूप से SocialForm द्वारा विरासत में प्राप्त किया जाएगा।

संदर्भ के लिए, इस दृष्टिकोण पर Django documentation है।

संबंधित मुद्दे