Mekalure, принимает. Возможно, что этот FilterRelation туда и вставится. Потому что я пока не вижу других Expressions, которым можно было бы скормить фильтр или QuerySet. Кстати, он, по-моему, принимает именно выражения, доступные в аннотациях.
Mekalure, Я ещё погонял этот вариант у себя. Получается, FilterRelation создаёт такой атрибут, который потом не применить нигде кроме order_by или filter. В prefetch_related его не впихнуть. Видимо, это единственный рабочий вариант. Я могу ошибаться, но что-то подсказывает, что мы все возможные варианты перебрали. Соответственно, Prefetch не может сортировку дать потому, что создаваемый атрибут не доступен в сортировке и аннотациях, а FilterRelation не может взять на себя функции Prefetch потому, что результат не доступен в выборке после завершения запроса. Как вариант здесь - просто сделать SQL Raw.
Mekalure, Ещё посмотри вот это. Я так понимаю, у тебя там старая джанга. А эта штука появилась с версии 2.0. Если не критично до неё обновиться, то смотри какая тут красивая картина: оно объявляется в annotation, а значит, будет доступно в order_by
Не совсем понял как так можно саннотировать set в одно значение. Знаю у Postgres есть агрегация в Array, но это не то.
Ну, первое, что приходит на ум: order_by точно принимает annotated values. А вот принимает ли annotation результат после prefetch_related - большой вопрос. Это надо смотреть. Может, то поле, которое ты создаёшь в prefetch_related, будет доступно в annotate. Тогда можно было бы использовать Case When и обратить None в число, а из number получить числовое поле.
Первый запуск - метод GET - твой код создал otk, потом вернул форму.
Второй запуск - метод POST - твой код создал второй объект otk и отредактировал его.
Прежде-всего, я не понимаю для чего ты создаёшь otk вручную и отдаёшь его на редактирование. Из твоего кода свободно убирается otk = Otk.objects.create(..., из кода формы убираются твои костыли и она спокойно создаёт объект с новыми параметрами.
Renniks, не знаю других инструментов, которые выгружали бы контрагентов в битом XML с обилием кириллицы. По опыту скажу, что парсер такой выгрузки на php я писал неделю. С юнит-тестами без мокинга. При этом, времени на отдых пока шли тесты не было. Стабильно часто тест дохнул.
Коллега писал выгрузку для какой-то кредитной организации. Без тестов. Писал месяц. Источником был 1С. Так что, там кавычками не ограничится.
> Можно ли это как то победить и если можно то как?
Не надо это побеждать. Никогда не слышал, чтобы разработка по паттернам вызывала потом проблемы с кодом.
> Стоит ли дальше изучать фреймы или надо просто признать - что программирование это не мое?
Если не нравится, то не ваше. Если нравится, но не получается, то, определённо - ваше. 7-8 лет назад мне говорили: "вон из программирования". Сейчас работаю, и, в принципе, за последний год негативных отзывов о коде на Review не получал.
Faliah: У меня есть похожая проблема: один бэкенд не умеет правильно отдавать данные. В результате приходится использовать jQuery.ajax. Приходится применять изменения через $apply. Но это частные случаи.
BlastPy: Функция, которая сейчас работает, не выполняет нужной задачи. Редирект для owner'а работает только тогда, когда он уже зарегистрирован и заходит на страницу /login. Всех неавторизованных пользователей, которые отправляют логин и пароль, ваша функция перекидывает на стандартное представление авторизации, Оно, как известно, при соответствии логина и пароля, авторизует пользователя и направляет его на дефолтную страницу: /accounts/profie
BlastPy: Я уже озвучил правильный ответ: вам необходимо написать кастомную авторизацию с нуля. Если хотите готовый код - задайте этот вопрос на любом сайте фриланса.
BlastPy: И что, это что, новость, что джанга шифрует пароль? Зачем вы вообще взялись за работу, не зная движка? Или даже так: зачем вы взялись за работу, если вас удивляет шифрование пароля в админке?
Gambetto: например, использовать twisted или subprocess, lxml или BS, включать дополнительный препроцесс JS или нет. Какую ORM выбрать для работы и как оптимизировать запросы. Если надо просматривать результаты, что поставить на backend. Что использовать для запуска по расписанию? Как тестировать результат. Парсинг хорош тем, что, во-первых, под каждую новую задачу нет абсолютно готового алгоритма. Разбор ответа может быть настолько изощрённым, что без рефакторинга код будет представлять собой сплошную портянку с условиями. Очень много времени уходит на регулярные выражения, так что изучить их будет относительно просто.