Мне нужно наследовать одну форму на основе другой, как описано в Документация 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.
ПРИМЕЧАНИЕ , на котором я запускаю этот код Google App Engine с Django 1.2.1 .
Теперь я использовал форму без наследования, и это хорошо работает:
class BlogEditForm(forms.ModelForm):
class Meta:
model = Blog
exclude = ('author', 'slug')
Я думаю, что текущая ситуация основана на реализации Google App Engine форм Patcher.