2009-06-29 8 views

risposta

16

Mentre la risposta di Daniel Roseman funziona, non è la soluzione migliore. Richiede un po 'di duplicazione del codice dovendo ri-dichiarare il campo del modulo. Ad esempio, se disponi di un valore verbose_name in quel campo, devi anche aggiungerealla riga CharField, poiché la re-dichiarazione dell'intero campo cancella praticamente tutto ciò che è stato impostato sul tuo modello per quel campo.

L'approccio migliore è quello di sovrascrivere il metodo del form __init__ e impostare in modo esplicito field.required-True o False lì.

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

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

Sicuro. Basta definire un modulo personalizzato, con il campo obbligatorio sottoposto a override per impostare required = True e usarlo nella classe admin.

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 

Quindi qui MyAdmin utilizza il modulo sottoposto a override, ma MyInlineAdmin non lo è.

+0

Grazie mille – Mitch

Problemi correlati