Django - добавить фильтр в PartialDate - PullRequest
2 голосов
/ 16 октября 2019

У меня есть дата, собранная как PartialDate, если дата завершена, дата в английском формате ('гггг-мм-дд') в моем шаблоне. Я хотел бы преобразовать эту дату во французский формат, но учитывая, что дата может быть частичной

если известен только год, я хотел бы видеть 2019, если известны только год и месяц, я хотел бы видеть 10/2019 (преобразовать 2019-10 в 10/2019), и если дата будет завершена, я быхотел бы видеть 16/10/2019 (преобразовать 2019-10-16 в 16/10/2019)

Я попытался добавить некоторую логику в свой шаблон

{% if participante.pat_nai_dat|length_is:"4" %}
    //do something
{% elif participante.pat_nai_dat|length_is:"7" %}
    //do something
{% else %}
    {{ participante.pat_nai_dat|date:"d/m/Y" }}
{% endif %}

, но length_is и датаfiltesr не работает с объектом PartialDate. Я прочитал документацию по Django для более подходящего фильтра, но не обнаружил, что мой подход, вероятно, неверен ... как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Если вы все еще хотите принять решение ... В PartialDate есть методы, которые возвращают значение True / False в зависимости от точности.

>>> partial_date = PartialDate("2015-11-01")
>>> partial_date.precisionDay()
True
>>> partial_date.precisionMonth()
False
>>> partial_date.precisionYear()
False

Если вы хотите, чтобы оно печаталось в формате, PartialDate также поддерживает это. !

>>> partial_date.format('%Y', '%m/%Y', '%m/%d/%Y')
'11/01/2015'
>>> partial_date = PartialDate("2015-11")
>>> partial_date
2015-11
>>> partial_date.format('%Y', '%m/%Y', '%m/%d/%Y')
'11/2015'

и поэтому я считаю, что формат будет именно тем, что вам нужно

Я предлагаю взглянуть на документацию PyPi

0 голосов
/ 16 октября 2019

Я решаю свою проблему, используя персонализированный фильтр

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...