2009-05-05 5 views
4

Ich konfiguriere die Admin-Site meines neuen Projekts und habe ein wenig Zweifel, wie ich das tun soll, wenn ich beim Hinzufügen von Daten auf "Speichern" klicke durch die Admin-Site wird alles in Großbuchstaben umgewandelt ...Wechseln der Groß- und Kleinschreibung beim Hinzufügen von Daten über die Django Admin-Site

Edit: Ok Ich kenne die .Upper-Eigenschaft, und ich habe eine Aussicht, ich würde wissen, wie es geht, aber ich frage mich, ob es gibt Jede Eigenschaft, die für die Feldkonfiguration auf der Verwaltungsseite verfügbar ist: P

+0

Beide Antworten wo interessant, aber ich fehlte es einfach zu tun, wenn sie auf Admin-Bereich, die beide dank! – Andor

Antwort

13

Wenn Ihr Ziel ist nur zu haben, die Dinge in Großbuchstaben umgewandelt, wenn sie im Admin-Bereich zu speichern, die Sie create a form with custom validation wollen würden den Fall Änderung vorzunehmen:

class MyArticleAdminForm(forms.ModelForm): 
    class Meta: 
     model = Article 
    def clean_name(self): 
     return self.cleaned_data["name"].upper() 

Wenn Ihr Ziel ist immer in Großbuchstaben um den Wert zu haben, dann sollten Sie override save im Modellfeld:

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) 
+0

für den Fall der nicht erforderlichen Felder: 'self.name = self.name und self.name.upper()' – trudolf

+0

Großartiges Beispiel, klein und leicht verständlich. Ich danke dir sehr. –

1

Sie müssen override save(). 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() 
3

Aktualisierte Beispiel aus Dokumentation schlagen vor, eine mit rgs, kwargs passiert als:

Django wird, von Zeit zu Zeit, erweitert die Fähigkeiten von integrierten in Modellverfahren, das Hinzufügen neue Argumente. Wenn Sie * args, ** kwargs in Ihre Methodendefinitionen verwenden, werden Sie garantiert, dass Ihr Code diese Argumente automatisch unterstützt, 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()