【发布时间】:2019-06-09 08:32:13
【问题描述】:
我使用 profile 方法来自定义用户模型。我还使用this 站点创建注册 可以同时创建用户和配置文件的表单。
现在我想写edite_user查看。在这个question我也发现必须使用modelformset_factory
为这个目标创建edit_view。
这是我的文件:
#models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500)
degree = models.CharField()
#forms
class SignUpAdminForm(UserCreationForm):
bio = forms.CharField(widget=forms.Textarea)
degree = forms.CharField()
#Also_their_is_another_fields_here
class Meta:
model = User
fields = (
'username',
'email',
'password1',
'password2',
'bio',
'degree',
)
#Views.py
def add_user(request):
if request.method == 'POST':
form = SignUpAdminForm(request.POST)
if form.is_valid():
user = form.save()
user.refresh_from_db()
user.profile.bio = form.cleaned_data['bio']
user.profile.bio = form.cleaned_data['degree']
user.save()
return redirect('view_user')
else:
form = SignUpAdminForm()
template = 'add_user.html'
context = {'form': form}
return render(request, template, context)
def edit_user(request, id):
user = get_object_or_404(User, id=id)
if request.method == "POST":
UserFormSet = modelformset_factory(user, form=SignUpAdminForm)
if UserFormSet.is_valid():
edit_user = UserFormSet.save(commit=False)
edit_user.save()
return redirect('view_user')
else:
UserFormSet = modelformset_factory(User, form=SignUpAdminForm)
template = 'edit_user.html'
context = {'UserFormSet': UserFormSet}
return render(request, template, context)
但是这个视图不起作用。我还看到了这些链接:1,2,3 和 4;但他们帮不了我,我不明白 该怎么办。 你能帮我写一下编辑视图吗?
【问题讨论】:
标签: python django django-models django-forms django-2.2