如何将一个模型的pk转移到另一个模型

时间:2020-05-28 18:46:04

标签: django django-models

我有两个模型任务和子任务。 首先,应该由用户创建一个任务,然后用户可以为先前创建的任务创建子任务。

在子任务模型中,我为任务创建了一个外键。

最简单的方法是在创建新的子任务以创建两者之间的链接的同时,让用户获得任务名称(或id)。

但是我想通过以下方式做到这一点。

用户创建一个任务,然后重定向到列出所有任务的页面。用户选择某个任务,然后被发送到一个页面,该页面显示了所选任务的所有子任务。 此页面上有一个用于创建新子任务的链接,当用户使用此链接时,可以创建一个新的子任务,该子任务会自动与所选任务相关联。

如果这个问题不重要,请原谅我。 提前谢谢!!!

编辑:如丹尼尔所说 我在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 :(得分:0)

在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})