Отправка формы Django с использованием отношения "один-ко-многим

Я пытаюсь реализовать отношения "один ко многим" между двумя моделями в Django, и делал это на основе этого ответа.

У меня есть очень простая модель Projects и модель ProjectNotes, так что один проект может иметь несколько Notes.

Мой models.py:

class Project(models.Model):
    project_name = models.CharField(max_length=500)
    project_type = models.CharField(max_length=500)
    project_leader = models.CharField(max_length=500)


class ProjectNotes(models.Model):
    note_date = models.DateField(default=date.today)
    assigned_project = models.ForeignKey(Project, related_name='projectnotes', on_delete=models.CASCADE)
    note = models.TextField(max_length=500)

Мой вариант использования - показать веб-страницу с информацией для данного объекта Project, и показать форму текстового поля, где могут быть добавлены заметки (также показывая любые заметки, которые могут существовать).

Для этого у меня есть мой файл forms.py:

class AddProjectNoteForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(AddProjectNoteForm, self).__init__(*args, **kwargs)
        self.fields['note'].required = True

    class Meta:
        model = ProjectNotes
        fields = ['note']

Мой шаблон правильно отображает поле формы (и, как я полагаю, правильно отображает все существующие заметки), однако при попытке отправить заметку я получаю ошибку, сообщающую, что поле id является null:

null value in column "attached_project_id" violates not-null constraint

Насколько я понимаю, поле project_id не может быть пустым, но поскольку я его не определяю, это то, что django обрабатывает внутренне. Если это так, то почему он не делает этого здесь? Иначе (или даже так), каково решение?

редактирование:

Представление, которое обрабатывает сохранение формы, является:

def listprojects(request, pid):
    project = project.objects.get(id=pid)
    projectnotes = project.projectnotes.all()
    if request.method == 'POST':         
        if 'newprojectnote' in request.POST:
            newprojectnoteform = NewProjectNoteForm(request.POST)
            if newprojectnoteform.is_valid():
               newprojectnoteform.save()   
    context = {
        'project': project,
        'projectnotes': projectnotes,
        'pid': pid,
        'newprojectnoteform': newprojectnoteform,
    }
    return render(request, 'projects/list.html', context)
Вернуться на верх