Как да се отървете от часове, минути и секунди, когато показвате дата, филтрирана с локализиране (шаблони на Django)?

Как да се отърва от часове, минути и секунди, когато показвам локализирана дата ({{ post.pub_date|localize }}) в Django шаблон?

Ако използвам само нормална дата (нещо като post.pub_date|date:"d m Y"), мога да покажа само деня, месеца и годината (а не часовете, минутите и s). С филтъра за локализиране изглежда не мога да контролирам какво показвам.

В краен случай трансформирах обектите за дата и час в обекти за дата в моите изгледи, преди да изпратя публикациите, но това е повече работа (I for цикъл в списъка с публикации).

Благодаря.


person user1011444    schedule 13.03.2013    source източник
comment
Филтрите са верижни. Какво произвежда {{ post.pub_date|localize|date:d m Y }} за вас?   -  person Brandon    schedule 13.03.2013
comment
Опитах това, но принуждава формата на датата (първи ден, втори месец, трета година). В някои страни месецът е първи, а денят след това или месецът може или не може да бъде изписан с главна буква...   -  person user1011444    schedule 13.03.2013
comment
Надявах се да има нещо като {{ post.pub_date|localize(%D, %M, %Y) }}, където %D просто казва, че трябва да има ден някъде, без да налага позицията му в низа.   -  person user1011444    schedule 13.03.2013
comment
Не че знам, но разбира се, винаги можете да напишете свой собствен шаблонен филтър. Всъщност е доста лесно.   -  person Brandon    schedule 13.03.2013
comment
Определено ще опитам това и ще актуализирам тази публикация. Благодаря за бакшиша.   -  person user1011444    schedule 13.03.2013
comment
Моля. Моля, публикувайте вашето решение :)   -  person Brandon    schedule 13.03.2013


Отговори (1)


Django има вградена поддръжка за локализирано форматиране на дата; просто е деактивирано по подразбиране. Разгледайте официалните документи за повече информация, но краткият отговор е, че просто сте задали USE_L10N=True във вашите настройки.py.

person Hamms    schedule 13.03.2013
comment
Всъщност вече зареждам l10n. Работата е там, че датата е локализирана (за френския език тя показва: „1 март 2013 г. 10:00:22“, както би трябвало, вместо „01 март 2013 г. 10:00:22“). Проблемът, който имам, е да се отърва от частта „10:00:22“ в шаблона (а не от изгледа), без да налагам никакъв формат. - person user1011444; 14.03.2013
comment

Получавам ORA-01795: максималният брой изрази в списък е 1000 грешка за моя проект, който искам да разреша в кода. По принцип работя с 2 бази данни (един sql сървър, един oracle), като и двете имам достъп само за четене (създаване на временни таблици не е възможно).

Това, което правя, е да избера списъци с идентификатори от DB 1, след което да потърся информацията, съответстваща на тези идентификатори от DB2. Тук използвам клаузата „IN“, която съдържа повече от 1000 идентификатора. Искам да знам как мога да разреша това програмно - това е, което имам досега (псевдо код, моят истински код е много по-сложен с твърде много обвивки):

1. "select ID from table 1 where some condition." [Database 1 conn]
2. string IDs = "";
   while (rset.next)
   {
        IDs += rset.getcolumn("ID");
        IDs += ", ";
   }
   ID.Remove(ID.length - 2); //at this point I have all IDs separated by a comma.
3. "select * from table 2 where ID IN (" +IDs+ ")" //this is where the error occurs.

Има ли решение за това? Една от идеите, които имам, е да разделя низа за идентификатори в низов масив с 999 идентификатора във всяка клетка, след което да има цикъл for в низа на заявката на sql, който да добавя в условия ИЛИ, но имам проблеми с кода.

- person Hamms; 14.03.2013