Standardwert für Feld im Django-Modell


99

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, um Objekte dieses Typs zu erstellen / bearbeiten. Wie kann ich das Feld entfernen baus dem Admin , so dass jedes Objekt kann nicht mit einem Wert angelegt werden, und eher einen Standardwert erhalten 0000000?

Antworten:



22

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

Sie können im Standardfeld auch eine aufrufbare Datei verwenden, z. B.:

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

Und dann definieren Sie die aufrufbare:

def foo():
    return 'bar'

4
Dies scheint in Version 1.8 nicht zu funktionieren, obwohl die Dokumentation dies anzeigt. Sollte foo()eine Klassenmethode sein?
Zahnlos Rebel

3
Möglicherweise müssen Sie den @staticmethodWrapper um die Funktion foo einstellen .
Süchtiger
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.