Я использовал метод профиля, чтобы иметь возможность настроить модель пользователя. Я также использую этот сайт для создания регистрации
форма, в которой пользователь и профиль могут быть созданы одновременно .
Теперь я хочу написать edite_user
view. В этом вопросе Я также выяснил, что должен использовать 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 ; но они не могли помочь мне, и я не понял
что делать. Можете ли вы помочь мне написать представление редактирования?