Django: Сохранение со связанными полями через формы

Я довольно новичок в Python и Django, поэтому прошу не обижаться на меня. У меня есть два класса, которые связаны через ForeignKey. Я пытаюсь сохранить их оба через один экран, create.html, который ссылается на view.py. Затем я указываю используемые модели в form.py.

Моя настройка приведена ниже, и я получаю сообщение Not Valid. Я не уверен, что я делаю неправильно.

model.py

class Request(models.Model):
    title = models.CharField(max_length=50, null=True)
    description = models.CharField(max_length=200, null=True)

class RequestDocument(models.Model):
    request = models.ForeignKey(Request, related_name='documents', on_delete=models.CASCADE)
    document = models.FileField(upload_to=request_document_upload_handler)

view.py

def requests_create_view(request):
    obj = Request
    form = RequestForm(request.POST or None)

    formset = RequestDocumentForm(request.POST or None)
    context = {
        "form": form,
        "formset": formset,
        "object": obj
    }
    if all([form.is_valid(), formset.is_valid()]):
        parent = form.save(commit=False)
        parent.save()
        child = formset.save(commit=False)
        child.request = parent
        child.save()
        context['message'] = 'Data saved.'
        context['created'] = True
    else:
        print('Not Valid')
    return render(request, "requests/create.html", context)

forms.py

class RequestDocumentForm(forms.ModelForm):
    document = forms.FileField()

    class Meta:
        model = RequestDocument
        fields = ['document']


class RequestForm(forms.ModelForm):
    class Meta:
        model = Request
        fields = ['title', 'description']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # django-crispy-forms
        for field in self.fields:
            new_data = {
                "class": 'form-control',
            }
            self.fields[str(field)].widget.attrs.update(
                new_data
            )
        self.fields['description'].widget.attrs.update({'rows': '10'})

create.html

{% if not created %}

<div style="margin:80px">
    <h1>New Request</h1>
    <form method="post">
        {% csrf_token %}
        {{form|crispy}}
        {{formset|crispy}}
        <button type="submit">Submit</button>
    </form>
</div>
{% else %}

<p>Your request was created.</p>
<a href='/requests/{{ object.id }}/'>{{ object.title }}</a>

{% endif %}
Вернуться на верх