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
?
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.
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")
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'