#python #django #django-templates
#питон #джанго #django-шаблоны
Вопрос:
Я использовал ifcahnged
как
{% for day in doctor.scheduled_by.all %}
{% ifchanged day.start_day_time %}
<span> {{ day }} </span>
<span>{{ day.start_day_time }} AM - {{ day.end_day_time }} PM</span>
{% endifchanged %}
{% endfor %}
и в результате получается следующее
Saturday
5:00:00 AM - 14:30:00 PM
Friday
0:09:00 AM - 0:02:00 PM
Я хочу что-то вроде
Saturday - Thursday
5:00:00 AM - 14:30:00 PM
Friday - Saturday
0:09:00 AM - 0:02:00 PM
🙂 (новичок в сообществе).
Обновить
На самом деле это то, как мой models.py является
class DaySchedulePattern(models.Model):
week_day = models.ForeignKey(WeekDays, on_delete=models.CASCADE)
time_slot_duration = models.DurationField()
start_day_time = models.DurationField()
end_day_time = models.DurationField()
doctor = models.ForeignKey(
"account.Doctor", on_delete=models.CASCADE,related_name="scheduled_by"
)
clinic = models.ForeignKey(Clinic, on_delete=models.CASCADE)
active = models.BooleanField(default=True)
Комментарии:
1. Можете ли вы поделиться своими моделями?
2. спасибо за повтор, просто обновил вопрос, и вот как выглядит моя модель.
Ответ №1:
Вы можете использовать встроенные фильтры django: date
предположим day
, что в вашем шаблоне есть дата-время в вашем коде (которое не показано в вашей модели), сначала нужно добавить продолжительность.
{% for day in doctor.scheduled_by.all %}
{% ifchanged day.start_day_time %}
<span> {{ day }} </span> - <span> {{ day|add:day.end_day_time|date:'l' }}
<span>{{ day.start_day_time }} AM - {{ day.end_day_time }} PM</span>
{% endifchanged %}
{% endfor %}
Ответ №2:
Возможно, у вас могло бы быть свойство end_day
account.Doctor
для конечного дня, возвращающее значение дня.
@property
def end_day(self):
days, hours, minutes = end_day_time.days, end_day_time.hours, end_day_time.minutes
return day.start_day_time datetime.timedelta(days=<days>, hours=<hours>).day
{% for day in doctor.scheduled_by.all %}
{% ifchanged day.start_day_time %}
<span> {{ day }} - {{day.end_day}}</span>
<span>{{ day.start_day_time }} AM - {{ day.end_day_time }} PM</span>
{% endifchanged %}
{% endfor %}