134 Stimmen

Standardwert für Feld in 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 Standard-Admin zum Erstellen/Bearbeiten von Objekten dieses Typs. Wie kann ich das Feld entfernen b von der Verwaltung, so dass jedes Objekt kann nicht mit einem Wert erstellt werden und erhält stattdessen einen Standardwert von 0000000 ?

201voto

FogleBird Punkte 69852

Satz editable a False y default auf Ihren Standardwert.

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

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

Außerdem ist Ihr id ist nicht erforderlich. Django wird es automatisch hinzufügen.

29voto

MrOodles Punkte 1818

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

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

Und dann definieren Sie die Callable:

def foo():
    return 'bar'

27voto

Andrew Hare Punkte 332190

Sie können die Standardeinstellung 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")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X