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")