it-swarm.com.de

Standardwert für das Feld im Django Modell

Angenommen, ich habe ein Modell:

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

Derzeit verwende ich den Standardadministrator zum Erstellen/Bearbeiten von Objekten dieses Typs. Wie entferne ich das Feld b vom Admin, damit nicht jedes Objekt mit einem Wert erstellt werden kann und erhalten stattdessen den Standardwert 0000000?

87
Yuval Adam

Setzen Sie editable auf False und default auf Ihren Standardwert.

http://docs.djangoproject.com/en/dev/ref/models/fields/#editable

b = models.CharField(max_length=7, default='0000000', editable=False)

Außerdem ist Ihr id -Feld nicht erforderlich. Django fügt es automatisch hinzu.

133
FogleBird

Sie können den Standard wie folgt festlegen:

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

und dann können Sie das Feld mit der Admin-Klasse Ihres Modells wie folgt ausblenden:

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

Sie können auch ein Callable im Standardfeld verwenden, z. B .:

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

Und dann definieren Sie die aufrufbare:

def foo():
    return 'bar'
18
MrOodles