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?

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")

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'

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.