私はDjangoを初めて使用し、ユーザーアカウント(ユーザー名、パスワード)に1つのフォームを2回使用します。最初のユーザーが必要ですが、2番目のユーザーが代わりに必要です。
問題は、チェックボックスが必須によっても表示されることです。最初のユーザーによるチェックボックスを回避して2番目のユーザーに表示するために、ビューに引数を指定できますか?私は次のようなケースをやりたい
それは可能ですか?1つの異なるフィールドがあるという理由だけで、同じフィールドで2つの異なるクラスを作成したくありません。
私のコード:
views.py
if request.method == "POST":
admin_form = MysqlDatabaseForm_user(request.POST or None, given_argument='admin')
user_form = MysqlDatabaseForm_user(request.POST or None, given_argument='extra_user')
if admin_form.is_valid():
#do something
if user_form.is_valid():
#do something
else:
admin_form = MysqlDatabaseForm_user()
user_form = MysqlDatabaseForm_user()
return TemplateResponse(request, "services/database/add_service_database.html", {'admin_form': admin_form,
'user_form': user_form},)
forms.py
class MysqlDatabaseForm_user(forms.ModelForm):
class Meta:
model = MysqlUser
def __init__(self, *args, **kwargs):
given_argument = kwargs.pop('given_argument', None)
super(MysqlDatabaseForm_user, self).__init__(*args, **kwargs)
if given_argument == 'extra_user':
self.fields['extra_user'] = forms.BooleanField(required=False)
else:
self.fields[given_argument] = forms.BooleanField(required=False)
else-caseは、「given_argument」にあるスクリーニング用です。空のようです