Когда я включаю скрытое поле в мою форму модели, форма модели не отправляется

Я пытаюсь создать веб-страницу для постинга.

Вот как это работает:
вы нажимаете на кнопку, появляется форма отправки, вы заполняете ее, вы нажимаете кнопку отправки, и процесс завершен. И когда форма будет отправлена, url-параметр будет передан как значение скрытого входа в модельформе в views.py.

Все работало нормально, пока я не добавил в modelform поле 'username', которое имеет HiddenInput в качестве виджета. Похоже, что modelform вообще не отправляется.

Вот мои коды:
models.py

from django.db import models
from django.db.models import CharField, TextField, DateField

class Post(models.Model):
    username = CharField(max_length=30)
    content = TextField()
    dt_created = DateField(auto_now_add=True)
    dt_modified = DateField(auto_now=True)

    def __str__(self):
        return self.content

forms.py

from django import forms
from django.forms import Textarea, HiddenInput
from .models import Post

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['content', 'username']
        widgets = {
            'content': Textarea(attrs={
                'class': 'write_input',
                'placeholder': 'write your story here...'
            }),
            'username': HiddenInput(attrs={
                'value': ' '
            })
        }
        labels = {
            'content': ''
        }

views.py

from django.shortcuts import render, redirect
from .forms import PostForm
from .models import Post

def account_main(request, username):
    context = dict()
    if request.method == 'POST':
        form = PostForm(request.POST, initial={'username': username})
        if form.is_valid():
            form.save()
            return redirect('account_main', username=username)
    form = PostForm()
    posts = Post.objects.all().order_by('dt_created')

    context['username'] = username
    context['form'] = form
    context['posts'] = posts
    return render(request, 'Account/account_main.html', context=context)

Я искал в Google и Stack Overflow в течение нескольких часов, но не смог найти никакого решения, которое бы хоть как-то решало проблему. Не мог бы кто-нибудь оказать мне помощь? И заранее большое спасибо.

Если вы хотите использовать поле Username как скрытое поле и не передаете значение в Username при отправке формы, то возникает ошибка исключения.

Чтобы избежать этого, вы должны установить поле имени пользователя как

--в models.py--

username = CharField(max_length=30, blank=true, null=true)

Вернуться на верх