2011-06-06 3 views
2

私は、モデルと、このような形式があります(もちろん、モデル内のフィールドの名前が滞在している私はf_categoryするフォームのフィールドの名前を持っていると思いフィールド名をモデルフィールド名とは異なる形式で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',) 

category )。手動でフォーム全体を構築する必要はありません(これは、フィールドがForeignKeyでオプションのリストを持つ選択フィールドでなければならないため困難です)。明確にするために


:名前によって私はHTMLフォームのコードのように名前の意味:<input type="select" name="f_category" />

+0

なぜ地球上で問題になるのですか? –

+0

同じモデル上で2つの異なる種類のフォームを使用する必要があるため、両方のフォームを同じURLに投稿できる場合は、フィールドごとに異なる名前を付ける必要があります。 – miernik

答えて

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

5

あなたのコメントはあなたが実際に行う必要があることを明らかにしています。これはあなたの提案した解決策ではなく、実際の問題を常に記述する必要がある理由です。当然、Djangoの同じページで2つの同一フォームを扱う適切な方法があります - フィールドをインスタンス化するときにprefixパラメータを使用してください。

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

これで、form1とform2を出力すると、すべてのフィールドに自動的に適切な接頭辞が付けられ、正しく分離されます。

+0

をhttps://docs.djangoproject.com/en/dev/ref/forms/api/#prefixes-for-formsから入手してください。 –

関連する問題