web-dev-qa-db-fra.com

Valeur par défaut pour le champ dans Django model

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 puis-je supprimer le champ b de l'administrateur afin que chaque objet ne puisse pas être créé avec une valeur , et recevra plutôt une valeur par défaut de 0000000?

87
Yuval Adam

Définissez editable sur False et default sur votre valeur par défaut.

http://docs.djangoproject.com/en/dev/ref/models/fields/#editable

b = models.CharField(max_length=7, default='0000000', editable=False)

De plus, votre champ id est inutile. Django l'ajoutera automatiquement.

133
FogleBird

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

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

et ensuite vous pouvez cacher le champ avec la classe Admin de votre modèle comme ceci:

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

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

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

Et ensuite définir le callable:

def foo():
    return 'bar'
18
MrOodles