Проблема с настройкой поля имени пользователя в форме 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})
Вернуться на верх