我们如何才能用该活动中已经存在的技术圈交换来代替活动中的生产交换?
在一个活动act
中,我尝试通过删除现有的生产交换existing_prod_exc
然后使用创建一个新的生产交换来做到这一点,new_prod_exc=act.new_exchange(input=act.key,output=act.key,type='production')
但我不知道如何将现有交换的所有交换特征“复制”techno_exc
到new_prod_exc
.
谢谢你帮助我。
我们如何才能用该活动中已经存在的技术圈交换来代替活动中的生产交换?
在一个活动act
中,我尝试通过删除现有的生产交换existing_prod_exc
然后使用创建一个新的生产交换来做到这一点,new_prod_exc=act.new_exchange(input=act.key,output=act.key,type='production')
但我不知道如何将现有交换的所有交换特征“复制”techno_exc
到new_prod_exc
.
谢谢你帮助我。
更改交换类型可以通过多种方式完成;您可以直接编辑type
SQLite 数据库中的列,或使用ExchangeDataset
对象,但我猜您想使用主界面。在这种情况下,更改交换类型很容易:
some_exc = next(iter(some_activity.technosphere()))
some_exc['type'] = 'production'
some_exc.save()
回想一下,输入和输出之间的唯一区别是技术领域矩阵中值的符号;因此,您可以通过将交换金额的符号乘以 -1 来完成同样的事情。
我猜你也想删除现有的生产交换(你应该先这样做,原因很明显!):
for exc in some_activity.production():
exc.delete()
与任何破坏性操作一样,最好先在实际数据的副本上进行尝试;您可以使用projects.copy_project()
.
您可以简单地直接更改您感兴趣的交易所并保存它:
exc_to_become_production['type'] = 'production'
exc_to_become_production['input'] = exc_to_become_production['output']
exc_to_become_production.save()
这样做将导致两次生产交换。然后,您可以根据需要删除现有的生产交换。