Python ';用户';对象没有属性';获取';以具有初始数据的模型形式

Python ';用户';对象没有属性';获取';以具有初始数据的模型形式,python,django,django-forms,Python,Django,Django Forms,我正在创建具有初始数据的模型表单。UserSettingsForm有效,但AddressSettingsForm无效。它为AttributeError“User”对象提供了没有属性“get”的属性。我使用与创建UserSettingsForm相同的方法创建AddressSettingsForm,但它给出了一个错误。Django调试页面没有给出错误源。它只是告诉我错误在AddressSettingsForm中。有人看到我的错误了吗 forms.py class UserSettingsForm(f

我正在创建具有初始数据的模型表单。UserSettingsForm有效,但AddressSettingsForm无效。它为AttributeError“User”对象提供了没有属性“get”的属性。我使用与创建UserSettingsForm相同的方法创建AddressSettingsForm,但它给出了一个错误。Django调试页面没有给出错误源。它只是告诉我错误在AddressSettingsForm中。有人看到我的错误了吗

forms.py

class UserSettingsForm(forms.ModelForm):
    class Meta:
        model = User
        exclude = ['role', 'address', 'is_active', 'is_admin', 'last_login', 'password']

    def __init__(self, user, *args, **kwargs):
        super(UserSettingsForm, self).__init__(*args, **kwargs)
        self.fields['first_name'].initial = user.first_name
        self.fields['last_name'].initial = user.last_name
        self.fields['email'].initial = user.email
        self.fields['phone'].initial = user.phone

class AddressSettingsForm(forms.ModelForm):
    class Meta:
        model = Address
        exclude = ['name']

    def __init__(self, address, *args, **kwargs):
        super(AddressSettingsForm, self).__init__(*args, **kwargs)
        self.fields['street'].initial = address.street
        self.fields['city'].initial = address.city
        self.fields['state'].initial = address.state
        self.fields['zip'].initial = address.zip
views.py

@login_required
def settings(request, template):
    if request.method == 'POST':
        user_settings_form = UserSettingsForm(request.POST, request.user)
        address_settings_form = AddressSettingsForm(request.POST, request.user.address)

        if user_settings_form.is_valid() and address_form.is_valid():
            address = Address(name=request.user.first_name + ' ' + request.user.last_name, **address_form.cleaned_data)
            user = request.user

            user.first_name = user_settings_form.cleaned_data['first_name']
            user.last_name = user_settings_form.cleaned_data['last_name']
            user.email = user_settings_form.cleaned_data['email']
            user.phone = user_settings_form.cleaned_data['phone']
            user.address = address
            user.save()

    else:
        user_settings_form = UserSettingsForm(request.user)
        address_settings_form = AddressForm(request.user)

    return render(request, template, { 'user_settings_form': user_settings_form, 'address_settings_form': address_settings_form, 'path' : request.path, 'is_logged_in': request.user.is_authenticated })
错误:

AttributeError at /settings/
'User' object has no attribute 'get'
模板:

21                  </div>
22  
23                  <div class='col-sm-2'></div>
24              </div><br>
25  
26              <div class='row'>
27                  <div class='col-sm-2'></div>
28  
29                  <div class='col-sm-4'>
30                      {% bootstrap_form user_settings_form %}
31  

      {% bootstrap_form address_settings_form %}



32                  </div>
33  
34                  <div class='col-sm-4'>
35
36                  </div>
37  
38                  <div class='col-sm-2'></div>
39              </div><br>
40  
41              <div class='row y-center'>

views.py
final
else
子句中,您正在使用
request.user
初始化
AddressForm
。在您传入的代码
request.user.address
中。此外,您正在尝试初始化
地址表单
,而不是
地址设置表单

\uuuu init\uuuu
两种方法都希望
user
address
作为第一个参数。但是,如果它是POST请求,则将它们作为POST数据之后的第二个参数传入。尝试交换订单

这样做:

if request.method==“POST”:
用户设置表单=用户设置表单(request.user,request.POST)
地址\设置\表单=地址设置表单(request.user.address,request.POST)
...
其他:
用户设置表单=用户设置表单(request.user)
地址\设置\表单=地址设置表单(request.user.address)

当不是POST请求时是否会发生错误?只有邮政申请?两者都有?当你删除代码时,很难看到你的错误。
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/core/handlers/base.py in get_response
                                response = wrapped_callback(request, *callback_args, **callback_kwargs) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/contrib/auth/decorators.py in _wrapped_view
                            return view_func(request, *args, **kwargs) ...
▶ Local vars
/Users/kevin/yaardvark/web/views.py in settings
                return render(request, template, { 'user_settings_form': user_settings_form, 'address_settings_form': address_settings_form, 'profile_form': profile_form, 'path' : request.path, 'is_logged_in': request.user.is_authenticated }) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/shortcuts.py in render
                        template_name, context, request=request, using=using) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/loader.py in render_to_string
                    return template.render(context, request) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/backends/django.py in render
                    return self.template.render(context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/base.py in render
                                return self._render(context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/base.py in _render
                    return self.nodelist.render(context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/base.py in render
                            bit = self.render_node(node, context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/debug.py in render_node
                        return node.render(context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/loader_tags.py in render
                    return compiled_parent._render(context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/base.py in _render
                    return self.nodelist.render(context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/base.py in render
                            bit = self.render_node(node, context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/debug.py in render_node
                        return node.render(context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/loader_tags.py in render
                            result = block.nodelist.render(context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/base.py in render
                            bit = self.render_node(node, context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/debug.py in render_node
                        return node.render(context) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/template/base.py in render
                                return func(*resolved_args, **resolved_kwargs) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/bootstrap3/templatetags/bootstrap3.py in bootstrap_form
                return render_form(*args, **kwargs) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/bootstrap3/forms.py in render_form
                return renderer_cls(form, **kwargs).render() ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/bootstrap3/renderers.py in render
                    return mark_safe(self._render()) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/bootstrap3/renderers.py in _render
                    return self.render_errors() + self.render_fields() ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/bootstrap3/renderers.py in render_errors
                        form_errors = self.get_fields_errors() + self.form.non_field_errors() ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/forms/forms.py in non_field_errors
                    return self.errors.get(NON_FIELD_ERRORS, self.error_class(error_class='nonfield')) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/forms/forms.py in errors
                        self.full_clean() ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/forms/forms.py in full_clean
                    self._clean_fields() ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/forms/forms.py in _clean_fields
                        value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name)) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/forms/widgets.py in value_from_datadict
                    return data.get(name, None) ...
▶ Local vars
/Users/kevin/.virtualenvs/yaardvark/lib/python2.7/site-packages/django/utils/functional.py in inner
                    return func(self._wrapped, *args) ...
▶ Local vars