Когда я передаю параметр url в modelform, вместо параметра url передается None

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

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

Однако, когда я просматриваю модель в manage.py shell, None сохраняется вместо url-параметра.

Вот коды:
models.py

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

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

    def __str__(self):
        return self.username

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': ''
        }

urls.py

from django.urls import path, include
from . import views

urlpatterns = [
    path('<str:username>/main/', views.account_main, name='account_main')
]

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)

Что я пробовал:
Передача initial={'username': username} в качестве kwargs в PostForm(),
Доступ к cleaned_data и передача параметра url в качестве значения, как: form.cleaned_data['username'] = username

Я не смог найти решение этой проблемы в Google или Stack Overflow до сих пор. Заранее благодарю вас за ответ!

Если ваш основной мотив - передать скрытое поле вместе с формой, вы можете напрямую отправить, не включая его в URL. И вы можете получить файлы по

-->request.POST.get(#fieldName)

Я нашел решение.

После того, как form.is_valid() возвращает значение True, я сохраняю форму по команде form = form.save(commit=False).
Затем я передаю параметр url в качестве значения для form.username. Наконец, я сохраняю форму по команде form.save().
. Когда я просматриваю модель, параметр url сохраняется, как и значение имени пользователя.

Вот код после того, как я его модифицировал:

def account_main(request, username):
    context = dict()
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            form = form.save(commit=False)
            form.username = username
            form.save()
            return redirect('account_main', username=username)
Вернуться на верх