Python 函数更新数据并在一次试验中再次使用更新的数据

Python 函数更新数据并在一次试验中再次使用更新的数据,python,django,Python,Django,我正在做一个功能,检查谁提交了家庭作业,并计算那些没有提交的惩罚。虽然它在db中很好地节省了那个些并没有提交作业的人,但问题发生在处罚上。这是在相同的功能中完成的(在检查谁提交后),但使用的是旧数据。它不会获取更新的数据(如果未提交,则为+1)。我认为这是因为更新和计算都是在一次功能,一次试验中完成的。但我不知道如何将它们分开,也不知道如何正确地获取更新的数据 我在原始函数之外创建了一个只计算惩罚的函数,并将其应用于原始函数中,打算将两个函数(检查提交和计算惩罚)分开,但结果是相同的 def g

我正在做一个功能,检查谁提交了家庭作业,并计算那些没有提交的惩罚。虽然它在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]
检查提交 计算罚金


检查提交工作进展顺利。(数据保存正确)因此我认为使用fine函数更新的数据计算惩罚也会起作用,但事实并非如此。数据是正确的,但问题是后一个函数没有得到更新的数据T.T

您可以尝试此解决方案
Memberships.objects.filter(group=group).update(noshow\u assign=F('noshow\u assign')*group.pauld)
您可以尝试此解决方案
Memberships.objects.filter(group=group).update(noshow\u assign=F('noshow\u assign')*group.pulture)

你能试试memberships.objects.filter(group=group)吗?更新(noshow\u assign=F('noshow\u assign')*group.pulture)非常感谢!它成功了。你能试试memberships.objects.filter(group=group)吗?更新(noshow\u assign=F('noshow\u assign')*group.pulture)非常感谢!它成功了。
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))