[英]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.