Python 在django 3.0中添加文件并从模型中获取数据以保存在另一个模型中

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

我正在尝试在表单中添加一个文件。在my views.py中,我试图从subject model获取subject_id,从SessionYearModel获取session_year_id,以将数据保存在Notes模型中。但它未处理。并给出“添加注释失败”的消息。怎么做? 下面是代码。

我的观点

staff\u add\u notes.html(模板)

错误:

我假设
主题\模型
包含一个主题,
会话\模型
包含一个会话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()