adán yuval
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 Django predeterminado para crear/editar objetos de este tipo. ¿Cómo elimino el campo? b
del administrador de Django para que cada objeto no poder se creará con un valor, y en su lugar recibirá un valor predeterminado de 0000000
?
FogleBird
Colocar editable
a False
y default
a su valor predeterminado.
http://docs.djangoproject.com/en/stable/ref/models/fields/#editable
b = models.CharField(max_length=7, default="0000000", editable=False)
También tu id
campo es innecesario. Django lo agregará automáticamente.
-
¿Un valor predeterminado para un campo implica que el campo no sea editable?
– Paul Beneteau
20 de enero de 2021 a las 12:16
También puede usar un invocable en el campo predeterminado, como:
b = models.CharField(max_length=7, default=foo)
Y luego define el invocable:
def foo():
return 'bar'
-
Esto no parece funcionar en 1.8, aunque la documentación indica que debería. Debería
foo()
ser un método de clase?–Marshall Davis
18 de junio de 2015 a las 5:53
-
Puede que tenga que configurar el
@staticmethod
envoltorio alrededor de la función foo.– Sami Boudoukha
16 de febrero de 2016 a las 14:59
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 Admin de su modelo de esta manera:
class SomeModelAdmin(admin.ModelAdmin):
exclude = ("b")