2012-06-07 9 views
13

Quiero extender ModelForms con el propósito principal de agregar campos al formulario. Creo que es más fácil de ver con un ejemplo:Subclase 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') 

¿Eso funcionaría? ¿O simplemente eliminaría los otros campos de BasicForm en SocialForm?

¿Cuál es la forma correcta de hacerlo?

Respuesta

36

Ésta es una respuesta tardía, pero quería tener en cuenta que puede subclase la clase interna Meta así:

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

De esa manera usted no tiene que repetir la definición model = Business, y cualquier otra Meta los atributos que puede agregar a BasicForm se heredarán automáticamente por SocialForm.

Como referencia, aquí está el Django documentation con este enfoque.

Cuestiones relacionadas