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?

Yuval Adam
fuente

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")
Andrew Hare
fuente
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'
MrOodles
fuente
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