2011-06-06 171 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

相關問題