Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ModelForm:向字段添加别名_Python_Django_Google App Engine_Django Forms - Fatal编程技术网

Python Django ModelForm:向字段添加别名

Python Django ModelForm:向字段添加别名,python,django,google-app-engine,django-forms,Python,Django,Google App Engine,Django Forms,我有一个(GoogleAppEngine)Django模型: class A(db.Model): a = db.StringProperty() class MyAForm(djangoforms.ModelForm): class Meta: model = A 这将创建一个具有一个字符串字段a的表单。在我的表格上,我想把这个叫做别的,比如说b。所以我想要一个名为b的表单,当表单发布时,我们创建一个新的a实体,其a属性填充b-值 有没有一个简单的方法来处理这个问题 (请注

我有一个(GoogleAppEngine)Django模型:

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

class MyAForm(djangoforms.ModelForm):
  class Meta:
    model = A
这将创建一个具有一个字符串字段
a
的表单。在我的表格上,我想把这个叫做别的,比如说
b
。所以我想要一个名为
b
的表单,当表单发布时,我们创建一个新的a实体,其
a
属性填充
b
-值

有没有一个简单的方法来处理这个问题


(请注意,我不想更改基础模型)

当您说要在表单上“调用”字段时,不清楚您的意思。你是说标签吗?这很容易做到:

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名称,但我想不出您希望这样做的任何原因。

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

class MyAForm(forms.ModelForm):

    class Meta:
        model = A

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

“(请注意,我不想更改基础模型)“我希望能够执行以下操作(假设我设置了正确的视图):
curl-d“b=my_b_string”http://domain.com/api/A
这将创建一个新的a(a='my_b_string')。如果在同一页上有两个表单,则它们都包含name字段。这就是我遇到的情况,我想将其中一个别名去掉,这样在传递到表单中时,request.POST将检索到正确的变量。@Richard:这就是表单前缀的作用:
class MyAForm(forms.ModelForm):

    class Meta:
        model = A

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