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')])