Найти - Пользователи
Полная версия: if/else
Начало » Django » if/else
1
Remoteroot
Здравствуйте.
Сразу извините за мой “французский” - я новичок в питоне. Нужно решить такую вот задачку.
Есть {{event.release_date|date:“H:i” }} и если его значение равно 00:00, тогда выводить “-”
barabansheg
Дак может эту проверку выполнять не в шаблоне? А там, откуда это приходит?
Remoteroot
barabansheg
Дак может эту проверку выполнять не в шаблоне? А там, откуда это приходит?
Вы абсолютно правы. Методом “проб и ошибок”, привел меня именно туда, откуда это приходит. Но всеравно спасибо.
Remoteroot
Вот нашел откуда это приходит.
class InstitutionEvent(models.Model):
release_date = models.DateTimeField(blank=False, null=False, verbose_name=_(u'дата проведения события'), default=datetime.datetime.now())
Что дальше?
alexzander77
{% ifequal event.release_date|date:“H:i” “00:00”%}
-
{% else %}
{{event.release_date|date:“H:i” }}
{% endifequal %}
Remoteroot
alexzander77
{% ifequal event.release_date|date:“H:i” “00:00”%}
-
{% else %}
{{event.release_date|date:“H:i” }}
{% endifequal %}
А я в моделях копался.
А если через модели?(просто интересно) Или здесь только так?
alexzander77
ну можно в модель метод добавить какойнить.
def release_date_as_str(self):
out=self['release_date'].strftime("%H:%M")
if out=="00:00":out="-"
return out
и в шаблоне пользовать его напрямую, без фильтра {{event.release_date_as_str }}
наверное можно, не пробовал ))
Remoteroot
В общем получилось так:
class InstitutionEvent(models.Model):
release_date = models.DateTimeField(blank=False, null=False, verbose_name=_(u'дата проведения события'), default=datetime.datetime.now())
def time_value(self):
if self.release_date.format(self.release_date.strftime('%H:%i')) == ‘01:01’:
return u'12345'
else:
return self.release_date

Ничего не поменялось. Пустая строка

Делал проверку, выводил вот так:
def time_value(self):
return self.release_date.format(self.release_date.strftime('%H:%i'))

Но ничего не выводит. Я так понимаю дело в формате времени?
alexzander77
оффтоп: в первом варианте у тебя возвращается, в зависимости от, то юникод строка, то датетайм объект.
это не есть гуд.


Remoteroot
Делал проверку, выводил вот так:
def time_value(self):
        return self.release_date.format(self.release_date.strftime('%H:%i'))

Но ничего не выводит. Я так понимаю дело в формате времени?
а %i (і маленькое) точно валидный форматтер? а то я тут пробую:

>>> d=datetime.datetime.now()
>>> d
datetime.datetime(2012, 2, 22, 21, 40, 18, 140000)
>>> d.strftime("%H:%i")
Traceback (most recent call last):
File "<console>", line 1, in <module>
ValueError: Invalid format string
>>> d.strftime("%H:%M")
'21:40'
Remoteroot
alexzander77
оффтоп: в первом варианте у тебя возвращается, в зависимости от, то юникод строка, то датетайм объект.
это не есть гуд.


Remoteroot
Делал проверку, выводил вот так:
def time_value(self):
        return self.release_date.format(self.release_date.strftime('%H:%i'))

Но ничего не выводит. Я так понимаю дело в формате времени?
а %i (і маленькое) точно валидный форматтер? а то я тут пробую:

>>> d=datetime.datetime.now()
>>> d
datetime.datetime(2012, 2, 22, 21, 40, 18, 140000)
>>> d.strftime("%H:%i")
Traceback (most recent call last):
File "<console>", line 1, in <module>
ValueError: Invalid format string
>>> d.strftime("%H:%M")
'21:40'
Получилось. Вот как:
def time_value(self):
if self.release_date.strftime('%H:%M') == ‘01:01’:
return u'Неизвестно'
else:
return self.release_date.strftime('%H:%M')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB