Как сделать форму модели Django с именем поля в форме, отличной от имени поля модели? - PullRequest
2 голосов
/ 06 июня 2011

У меня есть модель и форма, подобная этой:

class Content(models.Model):
    title = models.CharField(_("title"), max_length=16)
    category = models.ForeignKey(Category, verbose_name = _('category'))

class ContentForm(forms.ModelForm):
    class Meta:
        model=Content
        fields = ('title', 'category', )

Я бы хотел, чтобы имя поля в форме было f_category (конечно, имя поля в модели должно оставаться category). Можно ли это сделать, не создавая всю форму вручную (что сложно, потому что это поле ForeignKey и должно быть полем выбора со списком параметров)?


Чтобы уточнить: под именем я подразумеваю имя, как в коде HTML-формы: <input type="select" name="f_category" />

Ответы [ 2 ]

5 голосов
/ 07 июня 2011

Ваш комментарий показывает, что вам действительно нужно сделать - вот почему вы всегда должны описывать свою реальную проблему, а не предлагаемое решение. Естественно, в Django есть правильный способ работы с двумя одинаковыми формами на одной странице - используйте параметр prefix при создании экземпляра поля.

form1 = MyForm(prefix='form1')
form2 = MyForm(prefix='form2')

Теперь, когда вы выводите form1 и form2, все поля автоматически получают соответствующий префикс, поэтому они правильно разделены.

1 голос
/ 06 июня 2011

Я не уверен, что вы подразумеваете под "названием поля в форме".Вы имеете в виду лейбл?Или идентификатор?Или что-то другое?Настроить метку довольно просто:

class ContentForm(forms.ModelForm):
    category = forms.ModelChoice(queryset=Category.objects.all(), label='f_category')
    class Meta:
        model=Content
        fields = ('title', 'category', )
...