【问题标题】:django-allauth: rearrange form fields (change order)django-allauth:重新排列表单字段(更改顺序)
【发布时间】:2013-12-09 04:24:18
【问题描述】:

我正在尝试使用 django-allauth 进行用户注册。我有这个表格

class UserProfileForm(forms.ModelForm):
class Meta:
    model = UserProfile
    fields = ('gender', 'country', 'city', 'birth_date', 'has_accepted_tos')

并按照我在 settings.py 中设置的说明

ACCOUNT_SIGNUP_FORM_CLASS = "userprofile.forms.UserProfileForm"

问题在于,当呈现表单时,我的自定义表单要求提供性别、国家等信息,然后呈现在顶部,然后是要求用户名、电子邮件和密码的标准用户字段。这个顺序的东西:

  • 性别

  • 国家

  • 城市

  • 出生日期

  • has_accepted_tos

  • 用户名

  • 电子邮件

  • 密码1

  • 密码2

    我想按此顺序显示字段

  • 用户名

  • 电子邮件

  • 密码1

  • 密码2

  • 性别

  • 国家

【问题讨论】:

  • 请为第二个问题创建一个单独的问题......并在此处删除它。
  • 好的,我删除了第二个问题

标签: django forms django-allauth


【解决方案1】:

您需要提供field_order 属性:

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ('gender', 'country', 'city', 'birth_date', 'has_accepted_tos')
        field_order = ['username', 'email', 'password1', 'password2', 'gender', 'country']

但是,更好的做法是使用模板文件完全按照您的意愿呈现表单。

引用项目作者的话:

(...) 再说一次,我不会过分强调 allauth 拥有的东西 提供开箱即用的展示/设计。这一切只为 参考,这个想法是您创建一个适当的设计和表单布局 在您的模板中。

参考资料:

[1]https://github.com/pennersr/django-allauth/blob/master/allauth/account/forms.py

[2]https://github.com/pennersr/django-allauth/issues/269

【讨论】:

  • 谢谢。最后我去了第二条路线,并完全按照我的意愿渲染了模板。我只是不知道我能做到这一点。
  • 嗨,通过阅读 [1] 中的代码,field_order 不是放在“元”上,而是放在类本身上?
猜你喜欢
  • 1970-01-01
  • 2020-12-16
  • 2019-02-22
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 2017-02-28
相关资源
最近更新 更多