У меня есть форма, в которой пользователь может отправить текст, который затем сохраняется в модели TextSubmission
.
Тем не менее, он сохраняется только при извлечении instance=request.user
из views.py
и не сохраняется с экземпляром пользователя, который его отправил.
Если я оставлю instance=request.user
в, объект request.POST
не будет сохранен, но будет опубликован. (Я вижу из print(request.POST)
Может кто-нибудь помочь мне понять, почему это так и как получить текст для сохранения вместе с пользователем?
models.py
class TextSubmission(models.Model):
text_submission = models.CharField(max_length=50, null=True, blank=True)
user = models.OneToOneField(User, on_delete=models.CASCADE)
class Meta:
ordering = ['text_submission']
def __str__(self):
return self.text_submission
forms.py
class TextSubmissionForm(forms.ModelForm):
class Meta:
model = TextSubmission
fields = ['text_submission']
views.py
def profile_view(request):
if request.method == 'POST':
p_form = ProfileUpdateForm(request.POST, instance=request.user)
t_form = TextSubmissionForm(request.POST, request.FILES, instance=request.user.profile)
if p_form.is_valid() and t_form.is_valid():
p_form.save()
t_form.save()
messages.success(request, f'Your account has been updated!')
return redirect('profile')
else:
p_form = ProfileUpdateForm(instance=request.user.profile)
t_form = TextSubmissionForm(instance=request.user.textsubmission)
context = {
'p_form': p_form,
't_form': t_form,
}
return render(request, 'profile.html', context)
profile.html
<form method="POST" enctype="multipart/form-data">
<div class="profile-form">
{{ p_form }}
{{ t_form }}
</div>
<button type="submit" value="submit">Update Profile</button>
</form>