Information
- Rating
- 163-rd
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity
Specialization
Backend Developer, Web Developer
Lead
From 450,000 ₽
Git
Linux
SQL
Python
PostgreSQL
Docker
OOP
Django
SQLalchemy
RESTful API
Спасибо, что указали на ошибку, поправлю в статье
В целом, можно было использовать и JsonField, но тогда вам каждый раз нужно собирать и разбирать весь объект
С GenericForeignKey справедливое решение, но если уж очень много полей и сущностей, которые нуждаются в такой логике, на мой взгляд, издержек при чтении будет больше, смотря, конечно, как часто вам нужно получать именно время и автора обновления.
Я таким образом обычно храню маппинг внешних id (ID в других приложениях) с внутренним, так как они нужны не так уж часто и могут быть для совершенно разных приложений.
В задаче, которая стояла у вас, я бы все-таки использовал дополнительную таблицу, для каждой сущности. Для удобства был бы написан класс поля модели, который создавал бы дополнительную таблицу для модели владельца. В целом было бы что-то типо кастомной истории
Спасибо, что подсветили недочеты. По nullable FK действительно стоило рассмотреть пример.
А по поводу "оценить" как-то уже прижилось, везде, где работал, говорили так). Разумеется, речь шла о выполнении запроса.
Технически, при использовании asgi, в последних версиях Django у вас есть возможность использовать асинхронные варианты методов QuerySet, можете посмотреть и в этом направлении
Здравствуйте, спасибо за комментарий
Реальный кейс 1
Я работал на проекте, где все провайдеры (репозитории, интеракторы, юзкейсы, контроллеры) являются синглтонами, из-за этого у меня не было возможности во время запроса пользователя записывать какие-либо данные в экземпляр провайдера.
Я добавил дескриптор, который при присваивании записывает данные в ContextVar контекста запроса, а при запросе атрибута, возвращает их от туда же.
Реальный кейс 2
У меня на проекте есть Entity на основе Pydantic, которые я заполняю данными из django QuerySet.
Помимо этого написана логика, на то, чтобы в метод репозитория при вызове можно было передать DTO, который нужно вернуть вместо Entity.
Так как в Entity есть дополнительные вычисляемые свойства и их терять не хочется, сначала QuerySet конвертируется в Entity, а потом в DTO.
Так же в запросе может участвовать не только одна таблица базы данных, мне нужно, чтобы значения соответствующих полей с O2O, M2O и M2M связями также для начала конвертировались в соответствующих им Entity.
Для этого был написан дескриптор для вложенных Entity (NestedEntity), который использует в объемлющих Entity.
Реальный кейс 3
Описан в текущей статье в разделе про вложенные дескрипторы
Спасибо за комментарий, действительно забыл упомянуть об этом. Добавил в статью.
По поводу "Важно отметить", "Например" и "Примечание" в следующих статьях подумаю о том, как избавиться от их обилия
Если у вас есть пример статьи о том как правильно делать, тоже был бы рад, я планирую на основании комментариев сделать дисклеймер в начале этой статьи и дать новым читателям возможность перенаправиться на более квалифицированные статьи.
Добрый день, я даже не подозревал, что из-за этого могут блокироваться IP адреса или подсети, можете пожалуйста рассказать или поделиться ссылкой на тематические материалы о том, с чьей стороны и по каким принципам происходит блокировка? Думаю это было бы многим полезно
Я упоминал, про подключение по ключу
Выше был хороший комментарий о том, какой ключ сейчас актуально использовать
Про права, я тоже обратил внимание, что 777 не есть хорошо
А вот, про предусиановку чего-то как-то даже не задумывался никогда, в следующий раз, обращу на это внимание, спасибо, что рассказали об этом кейсе.
Понял, не знал. Я думал, написать и о том как настроить ту же амнезию, но что-то уже сомневаюсь, в том, что оно того стоит
Чем так плох OpenVPN для личного пользования? У меня например дома стоит ТВ на YaOS причем от tuvio я из VPN на него только его и могу поставить. А чтобы подружить ту же амнезию с роутером, мне во-первых нужен другой роутер, а во-вторых дополнительно с ним возиться. Я понимаю, что технология могла остаться в прошлом, но все мои, опять же подчеркну, личные потребности она более чем закрывает
А про амнезию, я не согласен, ее если честно, прям геморойнее было ставить и она у меня не работала корректно с клиента для iOS и Ubuntu, хотя с windows и android проблем не было. Собственно поэтому дополнительно поднял и OpenVPN
Хммм, разве это выглядит так запарно? Я потратил минут 15-20 чтобы настроить чистый сервер для примера из статьи и накидать черновик. Хотя, наверное, если делать это в первый раз, все может быть не так гладко, как я это вижу сейчас. Уже не помню, если честно, когда настраивал что-то на сервере впервые
Не уверен, что статьи с тегом "простой" и "туториал", как описано в рекомендациях "для неподготовленного читателя и широкую аудиторию" должен удовлетворять вашим требованиям в статье на 4 минуты. Я просто хотел поделиться решением, которое без лишней мароки прекрасно работает и я сам им пользуюсь более года. В целом, в этой предметной области я вряд ли являюсь хотябы среднячком, поэтому какого-то действительно образцового подхода, к моему великому сожалению, я продемонстрировать не могу. Я всегда рад любым замечаниям и предложениям по улучшению материала, был бы рад, если бы вы показали как что и где лучше сделать. Мне казалось что сообщества нужны чтобы помогать друг другу развивать компетенции, надеюсь, я не один такой. Если вы хотите почитать более квалифицированные статьи, буду рад, если вы откроете мои с пометкой "сложно" но, как я понимаю, моя предметная области не сильно соприкасается с вашей.
Огромное спасибо, что рассказали об этом. На самом деле трудно найти актуальную информацию и разобраться в ней, если предмет не является одним из основных предметов деятельности. Почитаю обо всем, что вы написали!
Не могу апнуть коммент из-за кармы, но хотелось бы почаще видеть конструктивные замечания
Вы всегда можете использовать
Или просмотреть содержание скаченного скрипта
У меня и openvpn и amnezia работает на сервере в Хельсинки, провайдер интернета Домру. Мобильный МТС и Билайн
Вам нужно порыться в разделах
Settings -> Editor -> General -> Auto Import
Settings -> Editor -> General -> Code completion
Settings -> Editor -> General -> Inline completion
И отключить не нужные вам чекбоксы
Сортировку файлов в разделе Project можно сделать по имени, дате обновления, типу файлов.
... -> Sort By -> <Нужный тип>
Большая часть этих комбинаций будет работать в windows. Если они будут отличаться, нужное действие вы сможете найти по жирным названиям, указанным в скобках в разделе
Settings -> Keymap
Вы можете добавить свои правила в разделе
Settings -> Editor -> Inspections
(документация). Добавить тип файлов можно в разделеSettings -> Editor -> File Types
(документация)https://3.jetbra.in/