Я пытаюсь заставить кнопку «следующий» исчезнуть, если нет следующего шага.Я попробовал следующее и застрял здесь.У меня есть задачи со связанными шагами, использующими ForeignKey.
Я думаю, что мой метод не работает, потому что PK не всегда начинается с 1. Пример задачи один имеет шаги pk 1,2,3.У второй задачи есть шаги pk 4,5,6.
Можно ли сделать так, чтобы ПК всегда был 1,2,3 для каждой задачи?Тогда это может сработать?Или есть лучшее решение?
views.py
def step_detail(request, task_pk, step_pk):
step = get_object_or_404(Step, task_id=task_pk, pk=step_pk)
next_step_pk = step_pk + 1
next_step = Step.objects.filter(pk=next_step_pk)
if next_step.count() == 0:
next_step_pk = None
return render(request, 'dailytask/step_detail.html', {'step': step,
'next_step_pk': next_step_pk})
models.py:
class Task(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
user_completed = models.BooleanField(default=False)
title = models.CharField(max_length=255)
description = models.TextField(blank=True, default="")
category = models.CharField(max_length=255, choices=CATEGORIES, default="traffic")
done_message = models.TextField(null=True, default="")
def __str__(self):
return self.title
class Step(models.Model):
title = models.CharField(max_length=255)
description = models.TextField(blank=True, default="")
user_completed = models.BooleanField(default=False)
content = models.TextField(blank=True, default="")
order = models.IntegerField(default=0)
step_number = models.IntegerField(default=1)
task = models.ForeignKey(Task, on_delete=models.CASCADE)
class Meta:
ordering = ['order', ]
def __str__(self):
return self.title
step_detail.html
Я хочу этокнопка, чтобы скрыть, когда в задаче больше нет шагов.
{% if next_step_pk %}
<a href="{% url 'step' task_pk=step.task.pk step_pk=next_step_pk %}">
<button class="btn btn-primary btn-block" type="button" style="background-color:rgba(0,123,255,0);margin-bottom:0px;">Next Step</button>
</a>
{% endif %}
urls.py:
path('<int:task_pk>/<int:step_pk>/', views.step_detail, name='step'),