Как показать в шаблонах, если запланированное окончание проекта отложено на основании даты окончания в django?

Я вроде как застрял с логикой, где если проект, который просрочен и его значение прогресса все еще не 100% завершения, он должен показать отложенный текст. Я передал завершенный и текущий тексты, просто передав значение projects.project_progress в == и < 100 с уважением.

Models.py

class Projects(models.Model):

id=models.AutoField(primary_key=True)
project_name=models.CharField(max_length=255)
project_manager=models.ForeignKey(CustomUser,on_delete=models.CASCADE, limit_choices_to={'is_project_manager' : True})
client_name=models.ForeignKey(Clients,on_delete=models.CASCADE, null=True)
project_pic=models.ImageField(upload_to='static/website/project-images')
project_start_date=models.DateField(null=True)
project_end_date=models.DateField(null=True)
project_description=models.TextField(null=True)
project_progress = models.PositiveIntegerField(null=True, default=0,
    validators=[
        MaxValueValidator(100),
        MinValueValidator(0)
    ])
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
is_draft = models.BooleanField(default=True)
objects=models.Manager()

class Meta:
    verbose_name_plural = 'Project'

def __str__(self):
    return f'{self.project_name}'

Views.py

@login_required(login_url='user-login')

def project_details(request, pk):

projects = Projects.objects.get(id=pk)
employed = Employee.objects.filter(project_site=projects)
invents = Project_Inventory.objects.filter(project_site=projects)

context = {

    'projects' : projects,
    'employed' : employed,
    'invents' : invents,

}

template_name ='project-admin/project-details.html'
return render(request, template_name, context) 

Шаблон "Детали проекта"

Я адаптировал код из этого ответа для вашей ситуации. Вы можете заменить оператор if из шаблона на следующий:

{% now "Y-m-d" as todays_date %}

<td>
{% if projects.project_progress == 100 %}
   <p>Completed</p>
{% elif projects.project_progress < 100 && todays_date < project_end_date|date:"Y-m-d" %}
   <p>Ongoing</p>
{% elif projects.project_progress < 100 && todays_date > project_end_date|date:"Y-m-d" %}
   <p>Delayed</p>
{% endif %}
</td>

В качестве альтернативы вы можете добавить контекстную переменную в ваше представление и передать булеву переменную, как описано в этом ответе

Вернуться на верх