模型管理器中的Django动态查询

时间:2016-11-15 14:23:09

标签: python django django-models

我有一个问题,我反复使用相同的代码(保存项目,而不是该项目的项目交易)。

所以我想也许我需要一个模型管理器来帮助我解决这个问题,而且我对django没有很多经验,所以我想知道你是如何处理这类问题的。

我的想法是创建一个类似于:

的InventoryManager
class InventoryManager(models.Manager):
    def create_item(self, **kwargs):
        #

    def create_item_trans(self, item, **kwargs):
        pass

    def create_item_with_trans(self, **kwargs):
        #  create item
        #  create item_trans
        #  return item with item_trans

但是在create_item_with_trans中,我没有办法发送 kwargs,因为** create_item 加入不同的kwargs, create_item_transaction 接受不同的** kwargs

1 个答案:

答案 0 :(得分:0)

我想象这样的事情:

def create_item(self, **kwargs):
    # kwargs = {'item_attr1': '', 'item_attr2': ''}

def create_item_trans(self, item, **kwargs):
    # kwargs = {'item_pk': 1, 'trans_attr1': '', 'trans_attr2': ''}

def create_item_with_trans(self, **kwargs):
    # kwargs = {'item_attr1': '', 'item_attr2': '', 'transaction': {'trans_attr1': '', 'trans_attr2': ''}}

    trans_attrs = kwargs.pop('transaction')
    item = self.create_item(**kwargs)
    trans = self.create_trans(item_pk=item.pk, **trans_attrs)
    #  return item with item_trans
相关问题