Проблема с настройкой поля имени пользователя в форме initial в Django
У меня есть форма с полем имени пользователя. Форма доступна только для вошедших в систему пользователей. Я пытаюсь заполнить имя пользователя в поле User, но безуспешно.
Что я делаю не так?
models.py
class Feedback(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
email = models.EmailField(default='')
title = CharField(max_length=300, blank=True, null=True, default='')
body = RichTextField(max_length=1500)
published = models.DateTimeField(default=timezone.now)
def save(self, *args, **kwargs):
self.user = self.user.username
super(Feedback, self).save(*args, **kwargs)
forms.py
class FeedbackForm(forms.ModelForm):
captcha = ReCaptchaField()
user = forms.CharField(initial='username') # it displays username as a string but request.user.username doesn't work here
class Meta:
model = Feedback
fields = ['user', 'email', 'title', 'body', 'captcha']
views.py
@login_required
def hal_feedback(request):
if request.method == 'POST':
form = FeedbackForm(request.POST, initial={"username": request.user.username}) # putting request.user.username in initial also it also doesn't work
if form.is_valid():
obj = form.save(commit=False)
email = form.cleaned_data['email']
title = form.cleaned_data['title']
body = form.cleaned_data['body']
current_site = get_current_site(request)
subject = 'Feedback'
message = render_to_string('articles/post_question_confirmation.html', {
'obj': obj,
'domain': current_site.domain,
'content': body,
'title': title,
})
obj.save()
send_mail(subject, message, "auth.ADMIN", [email], fail_silently=False)
return redirect('success')
else:
initial = {'username':request.user.username}
form = HALFeedbackForm(initial=initial)
return render(request, "articles/question.html", {'form': form})