首页 > 解决方案 > 如何根据时间编写状态输出?

问题描述

如何根据时间编写状态输出?

我有一个任务,我遇到了一个小问题,即在时间的使用上,如果不到一天,则分配状态“等待”('e'),如果超过一天,则状态“就绪”('rd')。这是我的代码的一部分,这里只是创建一张票并立即分配“等待”。请帮助我如何设置等待('e')的状态,如果不到一天,状态就绪('rd'),如果超过一天。提前感谢您的帮助或提示!

class PatientAcceptVisitView(AbsPatientVie
    template_name = 'patient/accept_visit.html'

    def post(self, request, **kwargs):
        context = self.get_context_data(**kwargs)
        pk_visit = context.get('pk_visit')
        visit = CoreVisit.get(pk=pk_visit)
        visit.guid_user_patient = self.request.user.guid_user
        visit.type = visit.VISIT_TYPES[2]
        visit.date_appointment = timezone.now()
        visit.save()
        PatientConsultationTicket.objects.create(pk_visit=pk_visit, 
        creator=self.request.user,
        consultation_time=visit.date_visit_start, status='e')
        visit_start_as_text = visit.date_visit_start.strftime("%H:%M день %d.%m.%Y")
        messages.info(request, f'Вы записались на {visit_start_as_text} к доктору {context.get("doctor")}')
        return HttpResponseRedirect(reverse_lazy('patient:visits'))

标签: pythondjango

解决方案


假设您有一个显示 PatientConsultationTicket 状态的视图,您可以检查日期,然后在给出响应时更新状态。

所以说你有一个方法可以向用户显示票

from datetime import datetime, timedelta

class TicketDetailView(View):

    def get(self, request, **kwargs):
        ticket = PatientConsultationTicket.objects.get(pk=kwargs['pk'])
        one_day_mark = ticket.created_at + timedelta(days=1)
        if datetime.now() > one_day_mark:
            ticket.status = 'rd'
            ticket.save()
        # context and other logic
        return render(request, 'patient/ticket_detail.html')

推荐阅读