2010-11-23 14 views
2

Django documentationで説明されているように、別のフォームを継承する必要があります。示す二つのフィールド - - 名前とスラグ私はこのフォームを印刷し、同様の結果を参照してくださいGoogle App EngineでのDjangoフォーム継承

'''models''' 

class Blog(db.Model): 
    slug = db.StringProperty('blog url', required=True) 
    name = db.StringProperty('blog name', required=True) 
    author = db.UserProperty(auto_current_user_add=True, required=True) 

'''forms''' 

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

    def clean_slug(self): 
     return "something" 

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

:私は次のコードを作成しました。しかし、BlogEditFormをレンダリングした結果、1つのフィールドが「名前」になることが予想されます。私はジャンゴ1.2.1Google App Engineをにこのコードを実行

NOTE

は今、私は継承せずにフォームを使用しているとも、この作品:

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

は、私が現在の状況フォームパッチャーのGoogleのApp Engineの実装に基づいていると思います。

+0

GoogleのApp Engineの中djangoformsパッチャーについてお読みください。 –

+0

誰がこの問題を解決するかについてのアイデアを持っていますか? –

答えて

0

実際に再利用されているのはBlogCreateFormクラスからclean_slugメソッドを除外する方が意味があります。次のようなことをすると、あなたが望むものが得られるはずです。 http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/db/djangoforms.py -

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

はい、あなたは正しいです。私はまだこの解決策を見つけました。ありがとうございました。これは動作します! –