私は最近、これに似た何かをした、と私の解決策は、動的にフォームをサブクラス化することでした、必要なフィールドのみを提供し、ちょうどそのフィールドのレンダリング:これはあなたの元のフォームの仕様を活用するに
from forms import SomeModelForm
from models import SomeModel
def view_name(request,pk,field):
SomeModelFieldForm(SomeModelForm):
class Meta(SomeModelForm.Meta):
fields = (field,)
inst = SomeModel.objects.get(pk=pk)
form = SomeModelFieldForm(instance=inst)
#the rest of your view goes here...
#...send only the form's field:
ctx = {'field': form[field]}
return render_to_response("template",ctx)
を - つまり、特別に定義されたウィジェットやその他の制限がある場合などです。フォーム全体を1つのフィールドに制限します。これは、既存のモデル上の単一フィールドの検証を可能にするためです。
ただし、フォーム全体を送信したくない場合は、1つのフィールドのみを送信します。 。form[field]
は、あなたが渡す特定のフィールドを表しdjango.forms.forms.BoundField
ある
たとえば、あなたがdjango.contrib.auth.models
からUser
モデルを使用していた、とあなたは。仕ユーザーのためのフォームを作成し、アイドルにform["username"]
を呼び出した場合に返されます:
<django.forms.forms.BoundField object at 0x01354750>
とprint form["username"]
を呼び出して印刷します:
<input id="id_username" type="text" name="username" value="name_of_user" maxlength="30" />
私はそれを取得できませんでした。それを詳しく教えていただけますか?フォーム[フィールド]とは何ですか? – rightskewed
@SaketChoudhary - 更新がより明確になることを願っています。 – Nate