Valeur par défaut du champ dans le modèle Django

100

Supposons que j'ai un modèle:

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

Actuellement, j'utilise l'administrateur par défaut pour créer / modifier des objets de ce type. Comment supprimer le champ bde l'administrateur afin que chaque objet ne puisse pas être créé avec une valeur et reçoive plutôt une valeur par défaut de 0000000?

Yuval Adam
la source

Réponses:

22

Vous pouvez définir la valeur par défaut comme ceci:

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

puis vous pouvez masquer le champ avec la classe Admin de votre modèle comme ceci:

class SomeModelAdmin(admin.ModelAdmin):
    exclude = ("b")
Andrew Hare
la source
21

Vous pouvez également utiliser un appelable dans le champ par défaut, tel que:

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

Et puis définissez l'appelable:

def foo():
    return 'bar'
MrOodles
la source
4
Cela ne semble pas fonctionner dans la version 1.8, bien que la documentation l'indique. Devrait foo()être une méthode de classe?
ToothlessRebel
3
Vous devrez peut-être définir le @staticmethodwrapper autour de la fonction foo.
Addict