Django ModelForm:为字段添加别名

2 投票
3 回答
6362 浏览
提问于 2025-04-15 18:03

我有一个(GoogleAppEngine)Django的模型表单:

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

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

这个表单里有一个字符串字段叫做 a。但是我想把这个字段叫成别的名字,比如 b。所以我希望能有一个字段叫 b,当表单提交时,我们可以用 b 的值来填充一个新的 A 实体的 a 属性。

有没有什么简单的方法可以实现这个功能呢?

(顺便说一下,我不想改动底层的模型)

3 个回答

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'
0

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们没有正确理解某些概念或者用法。为了帮助大家更好地理解这些问题,我们可以通过一些例子和解释来澄清这些概念。

比如说,假设你在写代码的时候,遇到了一个错误提示。这个提示可能会告诉你哪里出了问题,但有时候它的表述可能比较复杂,让人难以理解。这时候,我们就需要把这些复杂的内容拆解开来,看看每个部分的意思。

另外,编程中有很多术语和概念,比如“变量”、“函数”、“循环”等等。对于初学者来说,这些词可能听起来很陌生。我们可以把这些术语用更简单的语言来解释,让大家更容易理解。

总之,编程是一门需要不断学习和实践的技能,遇到问题时不要气馁,慢慢来,逐步理解每个概念,你会发现编程其实很有趣。

class A(db.Model):
    a=db.StringProperty(verbose_name='b')
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名称,不过我也想不出有什么理由你会想这么做。

撰写回答