使用Django 1.7并找出如何更改keyOrder,但问题是Sociallogin没有password1和password2字段,所以这不起作用:
class SignupForm(forms.Form):
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
fields_keyOrder = ['username', 'email','age', 'sex', 'password1', 'password2', 'captcha']
if (self.fields.has_key('keyOrder')):
self.fields.keyOrder = fields_keyOrder
else:
self.fields = OrderedDict((k, self.fields[k]) for k in fields_keyOrder)
我尝试在keyOrder中创建另一个没有password1的社交登记表单,但在尝试访问表单时出错:
class SocialSignupForm(forms.Form):
def __init__(self, *args, **kwargs):
super(SocialSignupForm, self).__init__(*args, **kwargs)
fields_keyOrder = ['username', 'email','age', 'sex']
if (self.fields.has_key('keyOrder')):
self.fields.keyOrder = fields_keyOrder
else:
self.fields = OrderedDict((k, self.fields[k]) for k in fields_keyOrder)
错误:
init ()获得了一个意外的关键字参数'sociallogin'
答案 0 :(得分:1)
我设法让它发挥作用。无需第二个注册表单,因此请从settings.py中删除此项: SOCIALACCOUNT_FORMS = {'注册':' yourapp.forms.SocialSignupForm'}
解决方案是添加 if hasattr(self,' sociallogin')
class SignupForm(forms.Form):
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
if hasattr(self, 'sociallogin'):
fields_keyOrder = ['username', 'email', 'listening_device', 'age', 'sex']
else:
fields_keyOrder = ['username', 'email', 'listening_device', 'age', 'sex', 'password1', 'password2', 'captcha']
if (self.fields.has_key('keyOrder')):
self.fields.keyOrder = fields_keyOrder
else:
self.fields = OrderedDict((k, self.fields[k]) for k in fields_keyOrder)