django-models - 从 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') ?
解决方案
您可以通过.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)
推荐阅读
- javascript - 名称为“..”的控制器未注册
- laravel-5 - htmlspecialchars() 的 Laravel 异常需要参数 1 为字符串
- maven - 为什么当我运行 maven 阶段时没有执行相关的目标
- javascript - 谷歌开发控制台,需要不断重新定义变量
- msbuild - 根据应用设置获取相同的 Azure 函数队列触发器代码以针对 2 个不同的队列
- java - mvn clean compile package 在构建中不包括 src/main/java 文件
- ruby - Ruby 中的窗口 getch 与 Curses getch
- javascript - 如何检查数组是否包含特定对象
- internationalization - 碧玉报告有什么方法可以支持高棉语吗?
- bash - 如何逐行运行多个交互式命令行(不是脚本)?