Flask sqla,难以查询加入

时间:2020-01-16 12:18:52

标签: flask sqlalchemy

我有这样的对象。

{
        "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",
            }
        ]
    }

0 个答案:

没有答案
相关问题