Ändern der Fall (obere / untere) zum Hinzufügen von Daten, die durch Django Admin Site

StackOverflow https://stackoverflow.com/questions/825955

  •  05-07-2019
  •  | 
  •  

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

War es hilfreich?

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top