Django Как передать переменную из представления в представление формы

У меня есть две модели. Одна - проект, другая - todo. Модель todo имеет внешний ключ, который является id связанного проекта.

У меня есть шаблон, который отображает отдельный проект и генерирует ссылку на форму для добавления списка todo. Как мне передать идентификатор проекта в форму для добавления списка?

Наверное, я могу просто передать идентификатор проекта в URL, но лучший ли это способ?

Мой текущий views.py

class CompanyProjectsDetailView(DetailView):
    model = Project
    id = Project.objects.only('id')
    template_name = 'company_accounts/project_detail.html'

class TodoCreateView(CreateView):
    model = ProjectTodo
    template_name = 'company_accounts/add_todo.html'
    fields = ['title', 'notes', 'status']

Добавление этого в представления решило проблему:

class TodoCreateView(CreateView):
    model = ProjectTodo
    template_name = 'company_accounts/add_todo.html'
    fields = ['title', 'notes', 'status']

    def form_valid(self, form):
        project = get_object_or_404(Project, id=self.kwargs.get('pk'))
        todo = form.save(commit=False)
        todo.project = project
        todo.save()
        return super().form_valid(form)

    def get_success_url(self):
        return reverse('project_detail', args=[self.kwargs.get('pk')])
Вернуться на верх