Django получает текущий id модели после сохранения формы модели и перенаправляет его с помощью этого pk для установки в качестве fk другой модели fk в форме модели

Работаю на Django 3.2 & не удается сохранить формы со ссылкой друг на друга. Например, Project>Photos>Assignments>Students каждая форма является моделью формы & имеет связь друг с другом. У меня есть одна Project Model & Другая Photos, хочу получить id проекта после сохранения & перенаправить пользователя на следующую форму модели "Photos" со ссылкой на id проекта, где project_id является FK в Photos Model & должен быть назначен автоматически, Может кто-нибудь помочь в этом. Вот что я пробовал. Я ищу url примерно следующего вида: URL для добавления проекта: http://example.com/projects/add-project. URL для проекта загрузки фотографий: http://example.com/projects/1/upload-photos

#urls.py
    path('add-project', views.submit_project, name='submit_project'),
    path('<int:project_id>/upload-photo/',
         views.upload_media, name='upload_media'),
#model.py code
class Project(models.Model):
    owner = models.ForeignKey(User, on_delete=models.PROTECT, null=True, blank=True, related_name='project_owner')
    title = models.CharField(max_length=200)
#Photo Model
class ProjectMedia(models.Model):
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    photo1 = models.ImageField(upload_to='projects/media/', null=True, blank=True)
#Views.py

def submit_project(request):
    if (request.user.is_authenticated):
        if request.method == 'POST':
            form = SubmitProjectForm(request.POST, request.FILES)
            if form.is_valid():
                title = form.cleaned_data['title']
                project = Project(title=title)
                project = form.save(commit=False)
                project.owner_id = request.user.id  
                project.save()
                messages.success(
                    request, 'Thank you! Your project has been submitted.')
        else:
            form = SubmitProjectForm()
        context = {
            'form': form,
        }
        return render(request, 'add-project.html', context)
#Photo submit view
def upload_media(request, project_id):
    project = get_object_or_404(Project, pk=project_id)
        if request.method == 'POST':
            form = ProjectMediaForm(request.POST, request.FILES)
            if form.is_valid():
                # getting cleaned data submitted by project form
                photo_1 = form.cleaned_data['photo_1']
                project_media = ProjectMedia(photo_1=photo_1)
                project_media = form.save(commit=False)
                project_media.created_by = request.user.id  
                project_media.project = project  
                project_media.save()
                messages.success(
                    request, 'Thank you! Your photos has been submitted')
        else:
            form = ProjectMediaForm()
        context = {
            'form': form,
            'project': project
        }
        return render(request, 'upload-photo.html', context)
Вернуться на верх