You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何在用户上传作业提交时修改关联Assignment的状态字段

实现方法

你可以通过下面的流程定位关联的Assignment记录,同时完成状态修改:

  1. 定位目标Assignment记录
    优先通过作业主键ID查询(避免标题重名导致匹配错误),示例代码如下:
# 假设前端提交表单时附带了对应作业的主键参数 assignment_id
target_assignment = Assignment.objects.get(id=assignment_id)

如果只能通过作业标题查询,建议同时加上作业创建人条件缩小范围,降低重名冲突概率:

# assignment_title 为前端传入的作业标题,target_teacher为当前作业对应的教师对象
target_assignment = Assignment.objects.get(assignment_title=assignment_title, assignment_creator=target_teacher)
  1. 更新提交状态
    你可以在新建提交记录时直接设置状态,也可以修改已有提交记录的状态:
# 场景1:新建提交记录时直接标记为已提交
Submissions.objects.create(
    submitted_by=当前登录的学生实例,
    submission_file=前端上传的文件对象,
    submitted_to=target_assignment.assignment_creator,
    submission_title=target_assignment,
    submission_status=True
)

# 场景2:修改已有待提交记录的状态
submission = Submissions.objects.get(submitted_by=当前登录的学生实例, submission_title=target_assignment)
submission.submission_status = True
submission.save()

优化建议

  • 模型命名建议调整为单数Submission,符合Django模型的通用命名约定
  • 查询操作建议使用Django封装的get_object_or_404方法替代原生get,可以优雅处理查询无结果的异常
  • 如果需要限制同一个学生不能重复提交同一个作业,可以在Submissions模型中增加联合唯一约束:
class Submissions(models.Model):
    # 原有字段保持不变
    class Meta:
        constraints = [
            models.UniqueConstraint(fields=['submitted_by', 'submission_title'], name='unique_submit_per_assignment')
        ]

内容的提问来源于stack exchange,提问作者F Nasir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:36:02