Python 在django 3.0中添加文件并从模型中获取数据以保存在另一个模型中
我正在尝试在表单中添加一个文件。在my views.py中,我试图从subject model获取subject_id,从SessionYearModel获取session_year_id,以将数据保存在Notes模型中。但它未处理。并给出“添加注释失败”的消息。怎么做? 下面是代码。 我的观点 staff\u add\u notes.html(模板) 错误:Python 在django 3.0中添加文件并从模型中获取数据以保存在另一个模型中,python,django,web,django-views,django-forms,Python,Django,Web,Django Views,Django Forms,我正在尝试在表单中添加一个文件。在my views.py中,我试图从subject model获取subject_id,从SessionYearModel获取session_year_id,以将数据保存在Notes模型中。但它未处理。并给出“添加注释失败”的消息。怎么做? 下面是代码。 我的观点 staff\u add\u notes.html(模板) 错误: 我假设主题\模型包含一个主题,会话\模型包含一个会话EARModel 更改您的查询,以便将其发送到: subject_model = S
我假设
主题\模型
包含一个主题,会话\模型
包含一个会话EARModel
更改您的查询,以便将其发送到:
subject_model = Subjects.objects.get(id=subject_id)
session_model = SessionYearModel.objects.get(id=session_year_id)
此外,您不想尝试,除非有特定的例外情况。任何失败都会被抓住,因此不会让你知道哪里出了问题。捕获特定的异常并删除try,except
queryset api的create
方法已经保存了模型。因此,在您的案例中调用create之后,不需要save()方法
编辑1
post请求dict中的值基于字段的名称属性。因此,将主题id和会话年份id更改为:
subject_id = request.POST.get("subject")
session_year_id = request.POST.get("session_year")
编辑2
与查询匹配的主题不存在。导致错误的行是。-->subject\u model=Subjects.objects.get(id=subject\u id)@MIsmail这意味着没有id=subject\u id的subject。您是否为
request.POST.get(“subject\u id”)
获取任何值?是的,在我的表单中,显示主题和会话年。@不匹配表单中主题和会话年字段的名称属性不是主题id或会话年id。请参阅我编辑的答案。@不匹配看起来您仍然使用objects.filter()
获取主题。看看我的答案。使用对象。get()
。
def staff_add_notes_save(request):
if request.method != "POST":
return HttpResponseRedirect(reverse("staff_apply_leave"))
else:
subject_id = request.POST.get("subject")
session_year_id = request.POST.get("session_year")
notesfile1 = request.FILES["notesfile"]
subject_model = Subjects.objects.filter(id=subject_id)
session_model = SessionYearModel.object.filter(id=session_year_id)
notes_model = request.FILES["notesfile"]
notes = Notes.objects.create(subject_id=subject_model,session_year_id=session_model, notesfile1=notes_model)
notes.save()
messages.success(request, "Successfully added Notes")
return HttpResponseRedirect(reverse("staff_add_notes"))
subject_model = Subjects.objects.get(id=subject_id)
session_model = SessionYearModel.objects.get(id=session_year_id)
subject_id = request.POST.get("subject")
session_year_id = request.POST.get("session_year")
class SessionYearModel(models.Model):
id=models.AutoField(primary_key=True)
session_start_year=models.DateField()
session_end_year=models.DateField()
object=models.Manager()