2010-11-23 12 views
2

Ich muss ein Formular basierend auf einem anderen erben, wie in Django documentation beschrieben. Ich habe folgenden Code erstellt:Django Formular Vererbung auf Google App Engine

Ich drucke diese Formulare und sehe ähnliche Ergebnisse - zwei Felder angezeigt - Name und Slug. Aber erwartet ein Feld "Name" im Ergebnis des Renderns BlogEditForm.

HINWEIS, dass ich diesen Code auf Google App Engine laufen mit Django 1.2.1.

class BlogEditForm(forms.ModelForm): 
    class Meta: 
     model = Blog 
     exclude = ('author', 'slug') 

Ich denke, dass aktuelle Situation basierend auf Google App Engine-Implementierung von Formularen Patcher:

Jetzt habe ich Form ohne Erbe und diese Arbeit gut genutzt.

+0

Lesen Sie mehr über djangoforms Patcher in Google App Engine - http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/db/djangoforms.py. –

+0

Wer hat eine Idee, wie Sie dieses Problem lösen können? –

Antwort

0

Es wäre wahrscheinlich sinnvoller, die clean_slug-Methode aus der BlogCreateForm-Klasse herauszuschneiden, da dies das einzige ist, was wirklich wiederverwendet wird. Tun Sie etwas wie das Folgende sollte bekommen, was Sie wollen.

class CleanForm(forms.ModelForm): 
    def clean_slug(self): 
     return "something" 

class BlogCreateForm(CleanForm): 
    class Meta: 
     model = Blog 
     exclude = ('author',) 

class BlogEditForm(CleanForm): 
    class Meta: 
     model = Blog 
     exclude = ('author', 'slug') 
+0

Ja, Sie haben Recht. Ich habe diese Lösung schon gefunden. Vielen Dank. Das funktioniert! –