Pull to refresh

Comments 18

И вот, когда я уже перевожу последний бэкенд на aiohttp — они решили добавить в джанго поддержку асинхронности
Там цела простынка про мотивацию написана. Зачем и для чего
Честно говоря, непонятно, где они найдут ресурсы на такое значительное изменение кода, учитывая, что в общем-то не хватает даже на известные проблемы и баги.
Тут не «можем потерять пользователей», а «практически вероятна смерть проекта».

Всё вширь и вширь. Ни ORM, ни шаблонизатор по-прежнему не дотягивают до аналогичных решений в проектах Flask (Jinja2, SQLAlchemy). Кстати, асинхронные проекты flask'у подобные уже давно прекрасно существуют и развиваются.

Django ORM не дотягивает до SQLAlchemy ровно также, как SQLAlchemy не дотягивает к Django ORM.

SQLAlchemy — поддержывает максимум фич базы даных
Django ORM — максимально удобно поддежрывает основые фичы баз даных

Посмотрите на Django REST Framework. Не думаю, что его реально сделать на SQLAlchemy

У нас на проекте использовали обе ORM через aldjemy

При чем тут фичи баз данных, если как орм алхимия более гибкая и функциональная? В т.ч. построитель запросов. И это факт. Да, джанговская орм простая и удобная и с этим никто не спорит. Почему я должен Django REST Framework делать на SQLAlchemy? O_o И это как-то характеризует SQLAlchemy? А минус в карму за то, что кто-то со мной просто не согласен?

При чем тут фичи баз данных, если как орм алхимия более гибкая и функциональная?

Как в SQLAlchemy сделать:


  1. аналог менеджеров (удобно иметь Model.objects для не удаленных записей и Model.all_objects для всех. Либо добавить функцию Model.objects.filtrate_for_user которая фильтрирует данные доступные для пользователя)
  2. сделать авто join (что бы, например, сделать queryset.filter(some__nested__field=2) на основе queryparams)
  3. селектнуть только некоторые поля и затем обратится к свойству объекта (User.objects.field('birthday').get().age где age это property класа User)
  4. автоматически сделать запрос только в случаи необходимости:

user = User(
    id=jwt_token_payload['user_id'], 
    username=jwt_token_payload['username']
)
print(user.id)

if some_case:
    print(user.first_name) # дополнительный запрос

А в Django ORM невозможно сделать select ... from <subquery> что очень полезно в сложных агрегациях


Почему я должен Django REST Framework делать на SQLAlchemy?

Это просто пример в каких случиях Django ORM более удобна
Я также начал с SQLAlchemy и плохо относился к Django ORM до того как поработал с Django REST Framework.


А минус в карму за то, что кто-то со мной просто не согласен?

У меня нету таких прав.

UFO just landed and posted this here

Отличный комментарий! Как вы считаете, насколько сложным будет изолирование моделей Django в слое сохранения состояния (persistence layer)?

автоматически сделать запрос только в случаи необходимости:

я думаю, ответ можно найти здесь.

Django выстрела в свое время за счет технически взвешенных решений и грамотной работы с комьюнити. В последнее время оно все больше напоминает фичеризм и заигрывание с инвесторами.


"Сделаем джангу асинхронной" как лозунг звучит интригующе. Это как повернуть реки вспять. Только для этого надо принять волевое решение и переписать все с нуля.


Имплементация asgiref, упомянутого в статье, больше похожа на попытку приделать груду костылей вопреки, а не благодаря выбранным архитектурным решениям. Это тупиковый путь.

+1, мне кажется это закат Django. А ведь хороший framework. Жалко.
Как по мне, лучше бы на текущих наработках делали отдельный фреймворк «AIOngo» какой-нибудь :-)

Полумерами разработчики с поддержкой и старой и новой логики можно подписаться на пару лед ада для себя и пользователей.

А я надеялся, что Джангу уже не придется учить… FastAPI + VueJS до недавнего времени был всем, что я мог хотеть. Но теперь возникает другой вопрос — не является ли Джанга лютым оверхедом если я пеку простые микросайты?

Оверхедом по чём: памяти, процессору, времени, деньгам?
Простые микросайты — это статичные страницы, личные бложики, на которые никто не ходит, высоконагруженные лендинги, ещё что-то?
Sign up to leave a comment.

Articles