Ändern der Fall (obere / untere) zum Hinzufügen von Daten, die durch Django Admin Site
Frage
Ich bin die Konfiguration der Admin-Seite von meinem neuen Projekt, und ich habe einen wenig Zweifel darüber, wie soll ich tun, beim Auftreffen auf ‚Speicher‘, wenn Daten über die Admin-Website hinzufügen, alles in Großbuchstaben umgewandelt wird ...
Edit: Ok ich die .oberhalb Eigenschaft kennen und II eine Ansicht täte, würde ich wissen, wie es zu tun, aber ich frage mich, ob es eine Eigenschaft für die Feldkonfiguration auf der Admin-Seite verfügbar: P
Lösung
Wenn Ihr Ziel ist nur zu haben, die Dinge in Großbuchstaben umgewandelt, wenn sie im Admin-Bereich zu speichern, sollten Sie auf erstellen Sie ein Formular mit benutzerdefinierten Validierung um den Fall zu ändern zu machen:
class MyArticleAdminForm(forms.ModelForm):
class Meta:
model = Article
def clean_name(self):
return self.cleaned_data["name"].upper()
Wenn Ihr Ziel ist es, immer den Wert in Großbuchstaben, dann sollten Sie Überschreibung im Modellfeld speichern:
class Blog(models.Model):
name = models.CharField(max_length=100)
def save(self, force_insert=False, force_update=False):
self.name = self.name.upper()
super(Blog, self).save(force_insert, force_update)
Andere Tipps
Aktualisiert Beispiel aus Dokumentation schlägt mit args, kwargs durch so weitergeben müssen:
Django wird, von Zeit zu Zeit, erweitert die Fähigkeiten von Built-in Modellverfahren, das Hinzufügen neue Argumente. Wenn Sie * args, ** kwargs in Ihre Methodendefinitionen, werden Sie garantiert, dass Ihr Code automatisch diese Argumente unterstützen, wenn sie hinzugefügt werden.
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def save(self, *args, **kwargs):
do_something()
super(Blog, self).save( *args, **kwargs) # Call the "real" save() method.
do_something_else()
Sie müssen Überschreibung speichern ( ) . Ein Beispiel aus der Dokumentation:
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def save(self, force_insert=False, force_update=False):
do_something()
super(Blog, self).save(force_insert, force_update) # Call the "real" save() method.
do_something_else()