Valore predefinito per il campo nel modello Django


100

Supponiamo che io abbia un modello:

class SomeModel(models.Model):
    id = models.AutoField(primary_key=True)
    a = models.CharField(max_length=10)
    b = models.CharField(max_length=7)

Attualmente sto utilizzando l'amministratore predefinito per creare / modificare oggetti di questo tipo. Come rimuovo il campo bdall'amministratore in modo che ogni oggetto non possa essere creato con un valore e piuttosto riceverà un valore predefinito di 0000000?

Risposte:



22

Puoi impostare il valore predefinito in questo modo:

b = models.CharField(max_length=7,default="foobar")

e poi puoi nascondere il campo con la classe Admin del tuo modello in questo modo:

class SomeModelAdmin(admin.ModelAdmin):
    exclude = ("b")

21

Puoi anche utilizzare un chiamabile nel campo predefinito, ad esempio:

b = models.CharField(max_length=7, default=foo)

E quindi definire il richiamabile:

def foo():
    return 'bar'

4
Questo non sembra funzionare in 1.8, sebbene la documentazione indichi che dovrebbe. Dovrebbe foo()essere un metodo di classe?
Sdentato

3
Potrebbe essere necessario impostare il @staticmethodwrapper attorno alla funzione foo.
Addict
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.