首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将参数传递给调度方法

将参数传递给调度方法
EN

Stack Overflow用户
提问于 2019-04-16 20:19:04
回答 1查看 731关注 0票数 0
  1. 我对Python和Django比较陌生。

我正在解析Excel表,并希望将数据存储在DB (MySQL)中。存储数据的表中的信息可通过Excel表获得。我想使用调度表来决定存储哪个对象。所需的领域可能有所不同。

我发现了一些我希望能起作用的东西,但不幸的是没有:

python: dispatch method with string input

代码语言:javascript
复制
func_name_dict = {
    'Assay': Assay.objects.get_or_create()
}

def dispatch(name, *args, **kwargs):
    return func_name_dict[name](**kwargs)

dispatch('Assay', name='ChIP-Seq')

我希望新对象将被存储或获取,并返回给调用者。

似乎发生的情况是,获取了3个现有的DB记录(它们都有不同的名称):

代码语言:javascript
复制
website.models.MultipleObjectsReturned: get() returned more than one Assay -- 
it returned 3!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-16 20:40:53

您正在调用参数所在的方法,并将结果存储在dict中,而不是将可调用方法本身字符串化。你应该这样做:

代码语言:javascript
复制
func_name_dict = {
    'Assay': Assay.objects.get_or_create
}

不加括号的.

(虽然我不确定这样的调度点,但如果只有一个条目的话。)

评论后的编辑

实际上,您有两个名为name的参数,一个作为位置参数,另一个在kwargs中。您将需要调用第一个参数,这是永远不会出现在kwargs中的东西--例如,dispatch_func_name或其他什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55716021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档