2009-04-16 10 views
66

Supposons que j'ai un modèle:Valeur par défaut pour le champ dans le modèle Django

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

Actuellement, je suis en utilisant les objets admin par défaut pour créer/modifier de ce type. Comment puis-je supprimer le champ b de l'administrateur de sorte que chaque objet ne puisse pas être créé avec une valeur et recevra plutôt la valeur par défaut 0000000?

Répondre

19

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 votre classe Administrateur de modèle comme celui-ci:

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

Vous pouvez également utiliser un appelable dans la valeur par défaut domaine, tels que:

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

Et puis définissez le appelable:

def foo(): 
    return 'bar' 
+4

Cela ne semble pas fonctionner dans 1.8, bien que la documentation indique qu'il devrait fonctionner. Est-ce que 'foo()' devrait être une méthode de classe? – ToothlessRebel

+2

Vous devrez peut-être définir le wrapper '@ staticmethod' autour de la fonction foo. – Addict

Questions connexes