[英]Django Form inheritance on 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的結果中期望一個字段“名稱”。
請注意 ,我使用Django 1.2.1在Google App Engine上運行此代碼。
現在,我使用了沒有繼承的表單,並且效果很好:
class BlogEditForm(forms.ModelForm):
class Meta:
model = Blog
exclude = ('author', 'slug')
我認為目前的情況是基於Google App Engine實施的表單修補程序。
將clean_slug
方法從BlogCreateForm
類中分離出來可能更有意義,因為這是唯一真正被重用的東西。 執行以下操作應該可以得到您想要的。
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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.