gpt4 book ai didi

python - 一种更新数据并在一次尝试中再次使用更新后的数据的功能

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:27 24 4
gpt4 key购买 nike

我正在开发一个功能,用于检查谁提交了作业并计算对未提交作业的处罚。虽然它很好地保存了没有提交作业的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))


检查提交工作正常。 (数据已正确保存)所以我认为使用使用fine函数更新的数据来计算惩罚也可以工作,但事实并非如此。数据是对的,但问题是后面的函数没有获取更新的数据T.T

最佳答案

您可以尝试此解决方案Memberships.objects.filter(group=group).update(noshow_assign=F('noshow_assign')*group.penalty)

关于python - 一种更新数据并在一次尝试中再次使用更新后的数据的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57547278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com