2009-06-29 16 views

Respuesta

16

Si bien la respuesta de Daniel Roseman funciona, no es la mejor solución. Requiere un poco de duplicación de código al tener que volver a declarar el campo de formulario. Por ejemplo, si tenía un verbose_name en ese campo, también debería agregar label='My verbose_name already set on model' a la línea CharField, ya que volver a declarar el campo completo básicamente borra todo lo establecido en su modelo para ese campo.

El mejor enfoque es para anular el método de la forma __init__ y establezca explícitamente field.required-True o False allí.

class MyModelForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(MyModelForm, self).__init__(*args, **kwargs) 

     self.fields['myfield'].required = True 
9

Sure. Simplemente defina un formulario personalizado, con su campo obligatorio anulado para establecer required = True, y úselo en su clase de administrador.

class MyForm(forms.ModelForm): 
    required_field = forms.CharField(required=True) 

    class Meta: 
     model = MyModel 

class MyAdmin(admin.ModelAdmin): 
    form = MyForm 


class MyInlineAdmin(admin.ModelAdmin): 
    model = MyModel 

Así que aquí MyAdmin está utilizando la forma anulado, pero no es MyInlineAdmin.

+0

Muchas gracias – Mitch

Cuestiones relacionadas