Django ModelForm: добавление псевдонима в поле - PullRequest
2 голосов
/ 15 января 2010

У меня есть (GoogleAppEngine) Django ModelForm:

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

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

Это создает форму с одним строковым полем a. В моей форме я хотел бы назвать это как-то еще, скажем b. Поэтому я бы хотел форму с полем с именем b, и когда форма POSTed, мы создаем новую сущность A со свойством a, заполненным значением b.

Есть ли аккуратный способ сделать сантехнику для этого?

(с. Я не хочу менять базовую модель)

Ответы [ 3 ]

5 голосов
/ 15 января 2010

Непонятно, что вы имеете в виду, когда говорите, что хотите «назвать» поле чем-то другим в вашей форме. Вы имеете в виду лейбл? Это легко сделать:

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

Если вы хотите изменить базовый HTML-идентификатор, вы можете сделать это через виджет:

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

Не думаю, что можно изменить имя HTML фактического поля, но я не могу придумать причину, по которой вы захотите это сделать.

0 голосов
/ 06 ноября 2011

другим способом следует переопределить метку поля:

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 голосов
/ 15 января 2010
class A(db.Model):
    a=db.StringProperty(verbose_name='b')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...