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

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

#0
10:15, 31 окт. 2015

в запросе складывается большая строка из фильтров

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


#1
11:23, 31 окт. 2015

query = Model.objects.filter().filteR()
query = query.filter().filter()
query = query.filter().filter()

#2
18:16, 31 окт. 2015

Tiendil
спс у меня правда как-то так получилось:

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

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

#3
18:18, 31 окт. 2015

Нет, это стандартный питоновский синтаксис, но мне он дико не нравится, поэтому не использую.

#4
23:41, 31 окт. 2015

Вот так вроде более читаемо:

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
)

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

Тема в архиве.