Как передать первичный ключ записи, созданной django-формой, форме на следующей после нее странице?

Моя Models.py содержит 2 модели, каждая Project может иметь несколько Role (т.е. отношения один-ко-многим):

class Project(models.Model):
    title = models.CharField(max_length=2000)
    state_of_project = models.CharField(max_length=10, default='ongoing')
    introduction = models.TextField(blank=True)

class Role(models.Model):
    role_name =  models.CharField(max_length=30)
    project = models.ForeignKey(Project, on_delete=models.SET_NULL, null = True)
    
    def __str__(self):
        return self.role_name 

После отправки формы для модели Project я хотел перенаправить пользователя на заполнение следующей формы для модели Role. Новые роли, добавленные туда, должны автоматически иметь внешний ключ project, указывающий на проект, созданный непосредственно перед этим.

Как я могу это реализовать? У меня конкретно проблема с добавлением механизма передачи первичного ключа только что представленной записи (для модели Project) в следующую форму (для модели Role).

Вы должны передать первичный ключ в urls.py и получить его через views.py

например :

#urls.py
path("add-role/<int:project_id>" ,views.add_role , name="add.role"),


------------

#views.py
def add_role(request , project_id):
        project = Project.objects.get(id=project_id)
        if request.method == "POST":
            form = ProjectForm(request.POST)
            if form.is_valid():
                f = form.save(commit=False)
                f.project = project
                f.save()
                return redirect("projects")
            else:
                return render(request , 'add-project.html' ,{"form":form})
        return render(request , 'add-project.html' ,  {"project":project})

и что-то вроде этого в вашем html:

<form method="post" action="{% url 'add.role' project.id %}">
 {% csrf_token %}
 <input type="text" name="role_name" />
</form>
Вернуться на верх