正如我在标题中所说,我希望允许用户对名为 Course
的实例进行投票,并在 72 小时 或 3 后锁定投票天(在我的示例中,为 2 分钟)。我遇到困难的是,如果类(class)已由其所有者编辑,我希望允许用户编辑投票。类(class)编辑时,必须解锁所有投票。
How bad today is, All the logic are gone, I can't think anymore, already tear off multiple sheets of paper!
到目前为止,我可以锁定投票,我的意思是我认为我锁定了它。
''' stuff '''
if vote:
NOW = datetime.datetime.now()
DEADLINE = 2 # minutes
if (NOW - course.date_edited).total_seconds() < (DEADLINE * 60):
vote.amount = amount
vote.save()
else:
vote = Vote.objects.create(
user = user,
amount = amount,
content_object = course,
)
date_edited
的 2 个模型在数据库中设置为 auto_now_add = True
我认为另一种方法是在编辑类(class)时编辑类(class)所有投票的日期,例如:
course.votes.all().update(date_voted=....) # I am not sure
让我知道该怎么做。预先感谢您!
最佳答案
您可以为 date_voted
字段设置 auto_now=True
,并使用 auto_now_add=True
添加 date_vote_created
。并在您看来,检查在此日期之后类(class)是否也已更改:
if vote:
NOW = datetime.datetime.now()
DEADLINE = 2 # minutes
if course.date_edited > vote.date_voted or (NOW - vote.date_vote_created).total_seconds() < (DEADLINE * 60):
vote.amount = amount
vote.save()
UPD
要在类(class)更改后解锁投票两分钟,您可以在单独的 if
block 中重置 date_vote_created
。
if vote:
NOW = datetime.datetime.now()
DEADLINE = 2 # minutes
if course.date_edited > vote.date_voted:
vote.date_vote_created = NOW
vote.save()
if course.date_edited > vote.date_voted or (NOW - vote.date_vote_created).total_seconds() < (DEADLINE * 60):
vote.amount = amount
vote.save()
UPD#2
if course.date_edited > vote.date_voted:
vote.amount = amount
vote.date_vote_created = NOW
vote.save()
elif (NOW - vote.date_vote_created).total_seconds() < (DEADLINE * 60):
vote.amount = amount
vote.save()
else:
print("Vote locked")
关于python - 在截止时间后锁定操作投票,在 Django 中编辑投票实例时解锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51428576/