python ORM storm中的复合外键引用

2024-07-05 12:59:08 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的模型:

class ProductCategory(Storm):
    __storm_table__ = 'product_category'

    pcat_no = Int(primary = True)
    pcat_name = Unicode()

    pitem = ReferenceSet(pcat_no, 'ProductItem.pcat_id')
    catpurchase = ReferenceSet(pcat_no, 'Purchase.pcategory_id')

class ProductItem(Storm):
    __storm_table__ = 'product_item'
    __storm_primary__ = 'pcat_id', 'pitem_no'

    pcat_id = Int()
    pitem_no = Int()
    pitem_name = Unicode()

    pcat = Reference(pcat_id, ProductCategory.pcat_no)
    purchase = ReferenceSet([pcat_id, pitem_no], [Purchase.pcategory_id, Purchase.pitem_id])

class Purchase(Storm):
    __storm_table__ = 'purchase'

    id = Int(primary = True)
    date = Date()
    pcategory_id = Int() # it must refer to pcat_no of ProductCategory & pcat_id of ProductItem
    pitem_id = Int() # It must refer to pitem_no of ProductItem

    pcategory = Reference(pcategory_id, ProductCategory.pcat_no)
    product = Reference([pcategory_id, pitem_id], [ProductItem.pcat_id, ProductItem.pitem_no])

条件是我想从表中选择“仅类别”或“两个类别和项目”(每个表上都有下拉列表)。 并且希望引用返回到“类别详细信息”或“类别和项目详细信息”与“引用集”。 我想列出带有类别名称(如果只提供了pcategory U&U id)或类别名称、项目名称(如果同时提供了类别和项目)的采购记录。&插入符合我要求的记录(amp;I)。 我遇到的主要问题是当我列出记录时:

^{pr2}$

我用烧瓶和风暴作为ORM。我有没有办法在表格中找到产品类别名称和产品项目名称?在


Tags: noidtableproductpurchase类别classint
1条回答
网友
1楼 · 发布于 2024-07-05 12:59:08

你在这里声明的问题是使用组合列表。如果改用元组,则示例应按预期工作:

class Purchase(Storm):
    ...
    product = Reference((pcategory_id, pitem_id), (ProductItem.pcat_id, ProductItem.pitem_no))

虽然错误消息有点不透明,但在这里不使用列表是有原因的:引用的两端不应更改,因此像list这样的可变类型实际上并不合适。在

相关问题 更多 >