Это модель функции пользователя.
это представление редактирования профиля, где мне нужно использовать обе формы для сохранения в базе данных из html template Это две формы, которые мне нужно использовать в одном просмотре Это шаблон html, на котором мне нужно показать контактный номер и иметь возможность редактировать его
Прошу прощения, если не могу правильно представить свой вопрос. Я хочу отображать и редактировать контактный номер на той же странице, что и другие данные, такие как имя пользователя, фамилия и имя. Я пробовал разные методы, такие как использование запроса для вызова из базы данных и сохранение формы и запроса в одной и той же функции, но он не обновлял контактный номер. Можно ли это сделать, или я должен использовать другой подход, если это можно сделать, пожалуйста, дайте мне знать? Если я пропустил некоторые детали, пожалуйста, дайте мне знать, если есть вопрос, так как я впервые задаю здесь, в стеке
views.py
@login_required()
def edit_profile(request):
if request.method == 'POST':
form = EditProfileForm(request.POST, instance=request.user)
if form.is_valid():
user = form.save()
profile = user.profileModel()
profile.contactNumber = form.cleaned_data['contactNumber']
profile.save()
return HttpResponseRedirect(reverse('profile'))
else:
form = EditProfileForm(instance = request.user)
return render(request, 'music/edit_profile.html', {'form' : form})
models.py
class profileModel(models.Model):
user = models.OneToOneField(User, on_delete= models.CASCADE)
contactNumber = models.IntegerField(validators=[validate_even])
# canPOST = models.BooleanField(default = False)
def __str__(self):
return 'Profile for user {}'.format(self.user.username)
Html файл для функции редактирования профиля
<form action="{% url 'edit_profile' %}" method="POST">
{% csrf_token %}
<div class="form-group">
<label for="exampleUserName1" >User Name</label>
<!-- taking username as an input-->
<input type="text" name="username" value="{{ request.user.username }}" maxlength="150" required id="id_username" class="form-control" >
<small id="usernameHelpInline" class="text-muted">
Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.
</small>
</div >
<div class="form-group">
<!-- taking first name as an input-->
<label for="exampleFirstName1" >First Name</label>
<input type="text" name="first_name" value="{{ request.user.first_name }}" maxlength="30" required id="id_first_name" class="form-control" >
</div >
<div class="form-group">
<!-- taking last name as an input-->
<label for="exampleLastName1" >Last Name</label>
<input type="text" name="last_name" value="{{ request.user.last_name }}" maxlength="150" required id="id_last_name" class="form-control" >
</div >
<input type="hidden" name="password" value="{{ request.user.password }}" id="id_password">
<!-- submit button to edit profile -->
<button type="submit" class="btn btn-primary" value="Edit Profile">Edit Profile</button>
</form>
Forms.py
class EditProfileForm(UserChangeForm):
password = forms.CharField(label='', widget = forms.TextInput(attrs = {'type' : 'hidden'}))
contactNumber = forms.CharField()
class Meta:
model = User
fields = ['username',
'first_name',
'last_name',
'password',
]
#User Extra Information ................
class profileInformForm(forms.ModelForm):
class Meta:
model = profileModel
fields = ['contactNumber']