我是 Django 新手,我对用户帐户(用户名、密码)使用一种表单两次。第一个用户是必需的,第二个用户是可选的。
问题是,复选框也由 required 显示。我可以为视图提供一个参数以避免第一个用户的复选框并将其显示给第二个用户吗?我想做一个案例
那可能吗?我不想仅仅因为一个不同的字段而编写两个具有相同字段的不同类。
我的代码:
视图.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},)
表格.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”中的内容。它似乎是空的