@Heik

Django ORM: выборка из нескольких таблиц в словарь?

Вобщем, есть две независимые таблицы (модели). Мне нужно собрать с них значения и передать в шаблон одним словарем. Ну типа этого:

class TableA(models.Model):
    field1 
    field2 
    main_img
    color
    ...

class tableB(models.Model):
    name
    field1
    field2
    ...

tableA = TableA.objects.filter(main_img=1).values('color')
tableB = TableB.objects.values('id', 'name')


Затем я создал новый словарь и с помощью "for" забил его данными из таблиц. Получилось нечто вроде:
dict = {
        'elem1': [{
            '0': {
                'id': '100',
                'name': 'test',
                'color': 'red',
                ...
            },
            '1': {
                'id': '200',
                'name': 'test2',
                'color': 'green',
                ...
            }
        }],
        'elem2': [{
            '0': {
                'id': '20',
                'name': 'test3',
                'color': 'yellow',
                ...
            },
        }]
    }


Насколько это хреново с точки зрения скорости и вообще?
  • Вопрос задан
  • 600 просмотров
Решения вопроса 1
Код на python всегда(почти) медленнее выборки по базе.
То есть выгоднее написать rawSQL. Но на вас ложится ответственность за защиту от SQL-инъекций.
Если средствами SQL не обойтись, и существует необходимость обработать массив информации в python(редко, скорее всего вы делаете что-то не так), то пользуйтесь готовой библиотекой itertools, т.к. ваши циклы могут быть не оптимальны. Также изучите поведение queryset'ов, iterator(). Вообще, если опишите задачу подробнее, не придется гадать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы