Valor padrão para o campo no modelo Django


100

Suponha que eu tenha um modelo:

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

Atualmente estou usando o admin padrão para criar / editar objetos deste tipo. Como faço para remover o campob do admin para que cada objeto não possa ser criado com um valor e, em vez disso, receba um valor padrão de 0000000?

Respostas:



22

Você pode definir o padrão desta forma:

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

e então você pode ocultar o campo com a classe Admin do seu modelo assim:

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

21

Você também pode usar um chamável no campo padrão, como:

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

E então defina o chamável:

def foo():
    return 'bar'

4
Isso não parece funcionar no 1.8, embora a documentação indique que deveria. Deve foo()ser um método de classe?
ToothlessRebel

3
Você pode ter que definir o @staticmethodwrapper em torno da função foo.
Addict em
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.