首页 > 解决方案 > 从 Django 中的孩子那里获取父母

问题描述

我的models.py中有两个模型:

class Case(model.Models):
    name = models.CharField(max_length=50)

class Work(model.Models):
    name = models.CharField(max_length=50)
    case = models.ForeignKey('Case', on_delete=models.CASCADE)

在我的views.py中,我有更新作品的功能,但我还需要访问它的案例以使用POST返回案例模板:

def updateWork(request, pk):
work = Work(id=pk)
work_form = WorkForm(instance=work)
case = Work.objects.filter(...)

if request.method == 'POST':
    work_form = WorkForm(request.POST, instance=work)
    if work_form.is_valid():
        work_form.save()
        return redirect('update_case', pk='here should be the case id')

context = {'work_form': work_form, 'work': work}
return render(request, 'case/update_work.html', context)

如何定义特定工作的父案例 ID 以将其指向:return redirect('update_case', pk='here should be the case id') ?

标签: django-models

解决方案


您可以通过.case属性访问它,也可以使用它.case_id来获取所ForeignKey引用列的值,当您需要时将加载该值:

def updateWork(request, pk):
    work = Work(id=pk)
    work_form = WorkForm(instance=work)
    case = Work.objects.filter(...)
    
    if request.method == 'POST':
        work_form = WorkForm(request.POST, instance=work)
        if work_form.is_valid():
            work_form.save()
            return redirect('update_case', pk=work.case_id)
    context = {'work_form': work_form, 'work': work, 'case': case}
    return render(request, 'case/update_work.html', context)

推荐阅读