我正在使用一个功能来检查谁提交了作业,并为那些没有提交作业的人计算罚款。尽管它可以很好地保存在未提交作业的db中,但是罚款会发生问题。可以使用相同的功能(在检查了谁上交后立即执行),但使用的是旧数据。它不会获取更新的数据(如果未提交,则为+1)。我认为这是因为一次完成一项功能,一次完成一次更新和计算。但是我不知道如何分离它们或正确获取更新的数据。
我在原始函数之外制作了一个函数,该函数仅计算罚款并应用于原始函数,目的是分离两个函数(检查提交和计算罚金),但结果却相同。
def group_update(request, group_id):
group = get_object_or_404(Group, id=group_id)
memberships = Membership.objects.filter(group=group)
members = [x.person for x in memberships]
assignments = Assignment.objects.filter(done_checked=False, group=group, due_date__lte=datetime.now())
for assignment in assignments:
submission = Done.objects.filter(assignment=assignment)
submitters = [x.author for x in submission]
assignment.done_checked = True
assignment.save(update_fields=['done_checked'])
for member in members:
if member not in submitters:
non_submit = memberships.get(person=member)
non_submit.noshow_assign = non_submit.noshow_assign + 1
non_submit.save()
for membership in memberships:
membership.penalty = membership.noshow_assign * group.penalty
membership.save(update_fields=['penalty'])
return redirect(resolve_url('study:group_detail', group.id))
检查提交是否正常。 (数据已正确保存)所以我认为使用罚款函数更新的数据也可以计算惩罚,但事实并非如此。数据是正确的,但事实是后面的函数无法获取更新的数据T.T
答案 0 :(得分:0)
您可以尝试此解决方案useRef