2011-06-06 128 views
2

我有一个这样的模型和形式:我该如何使用不同于模型字段名称的字段名称来创建Django模型表单?

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" />

+0

为什么地球上它有什么关系? – 2011-06-06 21:03:31

+0

因为我需要在同一个模型上使用两种不同的表单,所以如果两个表单都可以发布到同一个URL,那么每个表单的名称都需要有不同的名称。 – miernik 2011-06-06 21:08:57

回答

1

我不知道你所说的“在表单中的字段名”的意思。你的意思是标签?或ID?或者是其他东西?配置标签是很容易的:

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

我的意思是在HTML表单代码中的名称:''我不认为这与标签相同。 – miernik 2011-06-06 20:14:13

5

您的评论揭示了什么你真正需要做的 - 这就是为什么你应该总是说明你的实际问题,而不是你提出的解决方案。当然,在Django的同一页面上有两种相同的表单处理方式 - 在实例化字段时使用prefix参数。

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

现在,当你输出Form 1和Form,所有的字段将自动获得相关的前缀,所以他们得到适当的分离。

+0

来自文档:https://docs.djangoproject.com/en/dev/ref/forms/api/#prefixes-for-forms只是为了进一步阅读。 – 2011-06-07 05:10:49

相关问题