我正试图在Django3.1中开发一个个人资料编辑页面。我是新来的,所以如果有什么不对劲的话就说出来。我从Django edit user profile复制了一些
Views.py
from myapp.forms import UserForm, UserProfileInfoForm
from django.views.generic import (View, TemplateView, UpdateView)
from myapp.models import UserProfileInfo
class UpdateProfile(UpdateView):
model = UserProfileInfoForm
fields = ['first_name', 'last_name', 'email', 'phone', 'title', 'password']
template_name = 'profile.html'
slug_field = 'username'
slug_url_kwarg = 'slug'
models.py
class UserProfileInfo(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone = PhoneField(blank=True, help_text='Contact phone number')
title = models.CharField(max_length=255)
system_no = models.CharField(max_length=9)
def __str__(self):
return self.user.username
forms.py
#...
from myapp.models import UserProfileInfo
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta():
model = User
fields = ('username', 'email', 'password', 'first_name', 'last_name')
class UserProfileInfoForm(forms.ModelForm):
class Meta():
model = UserProfileInfo
fields = ('phone', 'title', 'system_no')
myapp/url.py
from django.urls import path
from . import views
app_name = 'myapp'
urlpatterns = [
path('', views.index,name='index'),
path('about/',views.AboutView.as_view(),name='about'),
path('register/', views.register,name='register'),
path('profile/', views.UpdateProfile.as_view(), name='profile'),
]
我有一个仅在登录后显示的链接: base.html(仅限href)
<a class="nav-link active" href="{% url 'myapp:profile' %}">Profile</a>
你能告诉我该修什么吗?单击上面的链接后,我在浏览器中收到一条错误消息
AttributeError at /profile/
type object 'UserProfileInfoForm' has no attribute '_default_manager'
到目前为止,你做得很好。请注意:
1.如果使用
UpdateView
基于类的视图,model
字段必须是模型的名称,而不是表单。(UserProfileInfo)2.如果您使用基于类的视图,则最好在类中设置一个成功url,以便在成功尝试后重定向
3.如果您正在使用
UpdateView
,则不需要在该模型的forms.py
中使用表单。您所需要的只是模板更新视图中的一个表单标记,它将为您处理并自动保存更改FormView
,记住这里您必须自己保存表单 链接到FormView
如果您想长期使用django,我强烈建议您检查此链接并开始阅读文档https://docs.djangoproject.com/en/3.1/ref/class-based-views/generic-editing/#django.views.generic.edit.FormView
相关问题 更多 >
编程相关推荐