尝试以更新配置文件形式获取用户数据时,“用户”对象没有属性“获取”

时间:2019-08-17 12:40:55

标签: django django-allauth

im in django是new。我正在尝试以更新形式获取用户数据。 这是我的代码:

models.py

.element {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}
@media (min-width: 768px) {
    .element {
        overflow: visible;
        white-space: normal;
        text-overflow: none;
    }
}

forms.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, default=1)
    image = models.ImageField(upload_to='profile_images', default='default.jpg')

    def __str__(self):
        return f'{self.user}'

views.py

class UpdateUserForm(forms.ModelForm):
    first_name = forms.CharField(max_length=100, widget=forms.TextInput(attrs={'class': 'uk-input', 'placeholder': 'Last Name'}))
    last_name = forms.CharField(max_length=100, widget=forms.TextInput(attrs={'class': 'uk-input', 'placeholder': 'Last Name'}))

    class Meta:
        model = User
        fields = ['first_name', 'last_name']

class UpdateProfileForm(forms.ModelForm):
    image = forms.ImageField(widget=forms.FileInput(attrs={'class': 'uk-button uk-button-default uk-button-medium uk-width-1-1', 'type': 'file'}))

    class Meta:
        model = Profile
        fields = ['image']

,我得到这个错误: 'User' object has no attribute 'get'

1 个答案:

答案 0 :(得分:0)

您应该通过instance=...参数传递实例。通过使用第一个参数,您将request.userrequest.user.profile作为data参数传递(就好像它是GET或POST querydict):

@verified_email_required
def profile_view(request):
    u_form = UpdateUserForm(instance=request.user)
    p_form = UpdateProfileForm(instance=request.user.profile)
    title = 'Profile Page'
    template_name = 'profile.html'
    context = {
        'title': title,
        'u_form': u_form,
        'p_form': p_form
    }
    return render(request, template_name, context)