python - 如何在views.py 中传递外键值?
问题描述
如何访问 views.py 中的 savedata.project_detail?每个用户将拥有任意数量的项目。每个项目将有一个唯一的主键。我想在 def checklist(request) 函数中访问该主键。我只从 html 模板中获取模型属性“checked_value”。另一个属性“project_detail”应该自动获取主键 pf 模型“project”。但我不知道如何在 def checklist 函数中获取模型项目的主键。如果有人可以在这里提供帮助。
这是models.py
class project(models.Model):
project_name = models.CharField(max_length = 20)
date = models.DateField(("Date"), default=datetime.date.today)
user = models.ForeignKey(User, on_delete=models.CASCADE)
class check_done(models.Model):
checked_value = models.CharField(max_length = 200)
project_detail = models.ForeignKey(project, to_field="id", db_column="project_detail", on_delete=models.CASCADE)
这是views.py
def show(request):
log_user = request.user
projects = project.objects.filter(user=log_user)
return render(request, 'project.html',{'p':projects})
@login_required(login_url='/login/')
def add(request):
if request.method == "POST":
data = request.POST['data']
new = project(project_name = data, user=request.user)
new.save()
return render(request, 'addproject.html')
else:
return render(request, 'addproject.html')
@login_required(login_url='/login/')
def checklist(request):
if request.method == "POST":
savedata = check_done()
savedata.project_detail = ??
print(savedata.project_detail)
savedata.checked_value = request.POST.get('abc')
savedata.save()
return render(request, 'checklist.html')
else:
return render(request, 'checklist.html')
解决方案
您需要将项目模型分配给 savedata.project_detail 属性:
@login_required(login_url='/login/')
def checklist(request):
if request.method == "POST":
savedata = check_done()
savedata.project_detail = project.objects.get(id=request.POST['project_detail_id'])
savedata.checked_value = request.POST.get('abc')
savedata.save()
return render(request, 'checklist.html')
else:
return render(request, 'checklist.html')
推荐阅读
- jquery - jQuery 有 1 个选择框模仿第二个选择框
- genexus - PWA Service Worker 不在云上工作
- reactjs - 边距在使用 MUI makeStyles 的 TextField 中不起作用
- python - KNeighborsRegressor.fit() 缺少位置参数,但示例显示它只需要两个
- kotlin - Kotlin 比较两个列表 - 如果 id 匹配则覆盖它
- jestjs - Nest.js 测试模块,不能覆盖注入另一个提供程序的提供程序,未定义接收
- sas - 当列不是数字时,SAS删除行
- google-sheets - Google 表格:条件格式
- reactjs - Dockerize 一个 React-Django 项目,其中前端由 Django 提供
- javascript - POST 请求... UnhandledPromiseRejectionWarning:未处理的承诺拒绝