首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelForm混淆

ModelForm混淆
EN

Stack Overflow用户
提问于 2013-04-27 06:07:37
回答 2查看 41关注 0票数 0

这一点:

代码语言:javascript
复制
class ArticleForm(Form):  
       title = forms.CharField(label="Title", max_length=255,required=True)
short = forms.CharField(label="Short Description",widget=Textarea(attrs={'rows':'4'}),required=True)
       content = forms.CharField(label="Content",widget=Textarea(attrs={'rows':'20'}),required=True)
      categories = forms.MultipleChoiceField(label="Audit Group",choices=[(o.id, o.real_name()) for o in AuditGroup.objects.all()], widget=forms.CheckboxSelectMultiple

)

被很好地呈现为视图-然后我意识到我需要一个ModelForm!;)

但这一点:

代码语言:javascript
复制
class ArticleForm(ModelForm):
    class Meta:
         model = Article
         fields = ("title","categories","topic","short_desc","content")
         widgets = {
             'short_desc':Textarea(attrs={"rows":'4'}) ,
             'content':Textarea(attrs={"rows":'20'}) ,
             'categories':CheckboxSelectMultiple(choices=[(o.id, o.real_name()) for o in AuditGroup.objects.all()]),
             'topic':CheckboxSelectMultiple(choices=[(o.id, o.name) for o in Topic.objects.all()])
         }

在我的视图中没有正确显示标签。这应该由o.real_name()o.name函数来完成。

有什么想法吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-27 10:30:45

你可以按照保罗的建议在你的模型上设置verbose_name

或者,如果您不想接触您的模型,可以在表单上显式定义您的字段。

代码语言:javascript
复制
class ArticleForm(ModelForm):

    short_desc = forms.CharField(label="Short Description")
    #similarly any change you want in other fields.
    class Meta:
        model = Article
        fields = ("title","categories","topic","short_desc","content")

另一种方法:如果您不想重新定义表单域并且只想更改标签,则可以在__init__中执行此操作

代码语言:javascript
复制
class ArticleForm(ModelForm):

    def __init__(self, *args, **kwargs):
        super(ArticleForm, self).__init__(*args, **kwargs)
        self.fields['short_desc'].label = "Short description"
    class Meta:
        model = Article
        fields = ("title","categories","topic","short_desc","content")
票数 1
EN

Stack Overflow用户

发布于 2013-04-27 06:39:17

按照您希望在标签中呈现的方式,在每个Model字段中设置verbose_name参数。例如:

代码语言:javascript
复制
class Article(Model):  
   title = forms.CharField(verbose_name="Title", ...)
   short = forms.CharField(verbose_name="Short Description", ...)
   content = forms.CharField(verbose_name="Content", ...)

   ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16245934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档