Python 在截止时间后锁定操作投票,在Django中编辑投票的实例时解锁
正如我在标题中所说,我希望允许用户对名为Python 在截止时间后锁定操作投票,在Django中编辑投票的实例时解锁,python,django,Python,Django,正如我在标题中所说,我希望允许用户对名为Course的实例进行投票,并在72小时或3天后锁定投票(在我的示例中,投票时间为2分钟)。我陷入困境的地方是,如果课程的所有者对其进行了编辑,我希望允许用户编辑投票。编辑课程时,必须解锁其所有投票 今天是多么糟糕,所有的逻辑都消失了,我不能再思考了,已经撕下了多张纸 到目前为止,我可以锁定投票,我的意思是我想我锁定了它 ''' stuff ''' if vote: NOW = datetime.datetime.now() DEADLIN
Course
的实例进行投票,并在72小时或3天后锁定投票(在我的示例中,投票时间为2分钟)。我陷入困境的地方是,如果课程的所有者对其进行了编辑,我希望允许用户编辑投票。编辑课程时,必须解锁其所有投票
今天是多么糟糕,所有的逻辑都消失了,我不能再思考了,已经撕下了多张纸
到目前为止,我可以锁定投票,我的意思是我想我锁定了它
''' 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\u vote
字段设置auto\u now=True
,并使用auto\u now\u add=True
添加date\u vote\u created
。在您看来,检查课程在此日期之后是否已更改:
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#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")
如果course.date\u编辑>vote.date\u投票:
投票.金额=金额
vote.date\u vote\u created=现在
投票。保存()
elif(现在-投票。投票日期创建)。总秒数()<(截止日期*60):
投票.金额=金额
投票。保存()
其他:
打印(“投票锁定”)
谢谢您的回答!我想确保:date\u投票
将与创建对象时添加的date
保持相同?是这样吗?@Lemayzeur我最初的想法是您只能使用date\u-vote
字段,这应该在创建和更新vote
对象时设置。但现在我想你还需要date\u vote\u create
来检查投票是否锁定:)看看更新的答案。这就是你要找的吗?好的!几乎可以,我想要的是,当编辑课程时,用户在对编辑的课程进行第一次投票后,有相同的截止时间
2分钟,以锁定历史投票。。。以您的示例为例,在编辑后,用户可以投票一次,投票后锁定,而我需要给用户另外2次minutes@Lemayzeur如果课程已更改,您可以重置创建的日期。请参阅更新中的示例。假设它会起作用。在这种情况下,创建的date\u vote\u应重命名为date\u lock\u start
。完美的是,如果elif
和else
语句,它也将与一起工作,因为我想在else
块中打印在2分钟后锁定的投票。你也可以用更少的代码来完成。我将编辑您的答案并接受它。非常感谢。
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()
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")