Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / django orm перенос строки

django orm перенос строки

Поделиться
despair1Постоялецwww31 окт. 201510:15#0
в запросе складывается большая строка из фильтров

как можно перенести часть фильтров на новую строку, чтобы повысить удобочитаемость кода?

TiendilУчастникwww31 окт. 201511:23#1
query = Model.objects.filter().filteR()
query = query.filter().filter()
query = query.filter().filter()
despair1Постоялецwww31 окт. 201518:16#2
Tiendil
спс у меня правда как-то так получилось:
                   neighbor=unit.objects.filter(x_pos=i.x_pos)\
                        .filter(y_pos=i.y_pos).filter(in_move=None)\
                        .exclude(user=i.user)

вроде работает, косяков потом с этим не возникнет?

TiendilУчастникwww31 окт. 201518:18#3
Нет, это стандартный питоновский синтаксис, но мне он дико не нравится, поэтому не использую.
batmentПостоялецwww31 окт. 201523:41#4
Вот так вроде более читаемо:
neighbor = unit.objects.filter(
  x_pos=i.x_pos
).filter(
  y_pos=i.y_pos
).filter(
  in_move=None
).exclude(
  user=i.user
)

А вот так более правильно (потому что куча фильтров эквивалентна AND и заменяется перечислением параметров запроса через запятую):

neighbor = unit.objects.filter(
  x_pos=i.x_pos,
  y_pos=i.y_pos,
  in_move=None,
).exclude(
  user=i.user
)

/ Форум / Программирование игр / Веб

2001—2017 © GameDev.ru — Разработка игр