簡體   English   中英

Google App Engine上的Django Form繼承

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM