Valor predeterminado para el campo en el modelo Django


100

Supongamos que tengo un modelo:

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 predeterminado para crear / editar objetos de este tipo. ¿Cómo elimino el campo bdel administrador para que cada objeto no se pueda crear con un valor y, en su lugar, reciba un valor predeterminado de 0000000?

Respuestas:



22

Puede establecer el valor predeterminado de esta manera:

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

y luego puede ocultar el campo con la clase de administrador de su modelo de esta manera:

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

21

También puede utilizar un invocable en el campo predeterminado, como:

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

Y luego defina el invocable:

def foo():
    return 'bar'

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

3
Puede que tenga que configurar el @staticmethodenvoltorio alrededor de la función foo.
Adicto
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.