Flask sqla, сложный запрос для объединения - PullRequest
0 голосов
/ 16 января 2020

У меня есть такой объект.

{
        "id": 1,
        "name": "size",
        "values": [
            {
                "id": 2,
                "name": "m",
            },
            {
                "id": 3,
                "name": "l",
            }
        ]
    }

Мне нужно добавить query в значения. Итак, я создал сложный запрос

q = (sqla.session.query(models.ProductAttribute)
                .filter(models.ProductAttribute.id == id_attr)
                 .join(models.ProductAttributeValue,
                       and_(models.ProductAttributeValue.id.notin_(rm_pr_a_v_ids),
                            models.ProductAttributeValue.product_attribute_id == id_attr
                            ))
                 .filter(models.ProductAttributeValue.distributor_id == g.account.distributor_id or
                         models.ProductAttributeValue.distributor_id.is_(None))
                 .options(contains_eager(models.ProductAttribute.values))
                 ).all()

, все работает хорошо, но у меня есть проблема, моя json теперь выглядит так

[// array - no need for me
{
        "id": 1,
        "name": "size",
        "values": [
            {
                "id": 2,
                "name": "m",
            },
            {
                "id": 3,
                "name": "l",
            }
        ]
    }
]

, но если я сделаю .first() вместо .all у меня json вот так

{
        "id": 1,
        "name": "size",
        "values": [
            {
                "id": 2,
                "name": "m",
            }
// in this place i have only one value ( 
        ]
    }

поэтому мне нужно сделать json вот так

{
        "id": 1,
        "name": "size",
        "values": [
            {
                "id": 2,
                "name": "m",
            },
            {
                "id": 3,
                "name": "l",
            }
        ]
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...