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'
答案 0 :(得分:0)
您应该通过instance=...
参数传递实例。通过使用第一个参数,您将request.user
和request.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)