2009-04-16 38 views
66

Supongamos que tengo un modelo:valor predeterminado para el campo en el modelo de Django

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

Actualmente estoy usando el administrador predeterminada para crear/editar objetos de este tipo. ¿Cómo se quita el campo b desde el administrador de modo que cada objeto no se pueden crear con un valor, y más bien a recibir un valor por defecto de 0000000?

Respuesta

19

Puede establecer el valor predeterminado de esta manera:

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

y luego se puede ocultar el campo con la clase de administración de tu modelo así:

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

También se puede utilizar un exigible en el valor por defecto campo, tales como:

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

Y luego definir el exigible:

def foo(): 
    return 'bar' 
+4

Esto no parece funcionar en 1.8, aunque la documentación indica que sí debería funcionar. ¿Debería 'foo()' ser un método de clase? – ToothlessRebel

+2

Puede que tenga que establecer el contenedor '@ staticmethod' alrededor de la función foo. – Addict

Cuestiones relacionadas