1

この質問は、同じページのさまざまなユーザーに入力を提示することに関するものです。単一の catch all Form を作成し、さまざまなフィールドを非表示にする必要がありますか? それとも、ユーザーごとにまったく異なるフォームを使用する必要がありますか? それとも別のオプションですか?

4

1 に答える 1

1

'html' の方法でフォームを非表示にしないでください。

管理フォームが通常のフォームに基づいて構築されている場合は、フォームの継承を使用できます。

class BaseForm(forms.Form):
    name = forms.CharField(max_length=50)
    ...

#Admin form inherits BaseForm
class AdminForm(BaseForm):
    occupation = forms.CharField(max_length=50)
    ...

2 つのフォームが十分に異なっていて、意味のある共通のベースを共有していない場合は、2 つの異なるフォームを作成してください。

フォームをセットアップしたら、ユーザーのパラメーターに基づいて、ビューでいずれかのフォームをレンダリングします。

def createView(request):
    if request.method == 'POST':
        if request.user.is_superuser:
            form = AdminForm(request.POST)
        else:
            form = BaseForm(request.POST)
        ...
于 2013-01-22T07:25:08.353 に答える