Как перенести ПК одной модели на другую - PullRequest
0 голосов
/ 28 мая 2020

У меня две модели: задача и подзадача. Сначала пользователь должен создать задачу, затем пользователь может создать подзадачи для ранее созданной задачи.

В модели для подзадачи я создал внешний ключ для задачи.

Простой таким способом было бы получить имя задачи (или идентификатор) перед пользователем при создании новой подзадачи для создания связи между ними.

Но я хочу сделать это следующим образом.

Пользователь создает задачу и перенаправляется на страницу, где перечислены все задачи. Пользователь выбирает определенную задачу, а затем отправляется на страницу, на которой отображаются все подзадачи для выбранной задачи. На этой странице есть ссылка для создания новой подзадачи, и когда пользователь использует эту ссылку, может быть создана новая подзадача, которая автоматически связывается с выбранной задачей.

Простите меня, если этот вопрос тривиален. Заранее спасибо !!!

РЕДАКТИРОВАТЬ: как сказал Даниэль, я добавил это в html <a href="{% url 'subtask-create' object.id %}">Create a subtask</a>

добавил это в urls.py path('task/user/subtask/new/<int:pk>', views.SubtaskCreateView.as_view(), name='subtask-create')

Это отображается первичный ключ задачи в url.

функция просмотра для создания подзадачи:

class SubtaskCreateView(CreateView):
    model = Subtask
    form_class = subtaskCreateForm

Теперь, как мне захватить первичный ключ задачи и поместить его в поле внешнего ключа для подзадачи. Я считаю, что это было бы проще, если бы я использовал представления на основе функций.

1 Ответ

0 голосов
/ 28 мая 2020

добавлена ​​функция публикации в CreateView.

def post(self, request, *args, **kwargs):
        pk = kwargs.get('pk')
        form = SubtaskCreateForm(request.POST)
        if form.is_valid():
            print('forms valid')
            subtask = form.save(commit=False)
            subtask.task = task.objects.get(id = pk)
            form.save()
            return redirect('home')
        print('form invalid')
        return render(request, 'users/subtask_form.html', {'form':form})
...