Django ModelForm:为字段添加别名

时间:2010-01-15 08:50:38

标签: python django google-app-engine django-forms

我有一个(GoogleAppEngine)Django ModelForm:

class A(db.Model):
  a = db.StringProperty()

class MyAForm(djangoforms.ModelForm):
  class Meta:
    model = A

这会创建一个包含一个字符串字段a的表单。在我的表格中,我想称之为别的,比如b。所以我想要一个带有b字段的表单,当表单被POST时,我们创建一个新的A实体,a属性填充b - 值。

有没有一个简洁的方法来做这个管道?

(p.s。我不想改变基础模型)

3 个答案:

答案 0 :(得分:5)

当你说你想在你的表单上“打电话”字段时,你的意思并不清楚。你的意思是标签吗?这很容易做到:

class MyAForm(djangoforms.ModelForm):
  a = forms.CharField(label='b')
  class Meta:
    model = A

如果要更改基础HTML ID,可以通过窗口小部件执行此操作:

  a = forms.CharField(widget=forms.TextInput(attrs={'id':'b'}))

我认为不可能更改实际字段的HTML名称,但我想不出你想要这样做的任何理由。

答案 1 :(得分:0)

class A(db.Model):
    a=db.StringProperty(verbose_name='b')

答案 2 :(得分:0)

另一种方式应该是重新定义该字段的标签:

class MyAForm(forms.ModelForm):

    class Meta:
        model = A

    def __init__(self, *args, **kwargs):
        super(MyAForm, self).__init__(*args, **kwargs)
        self.fields['a'].label = 'something'