python - 使用 **dict 时忽略无效的关键字参数

标签 python xml django keyword-argument

我正在使用 django 和 etree 将 xml 内容抓取到数据库中。我想使用 etree (root.attrib) 从 xml 创建一个字典,然后使用 Model(**dict) 在 Django 中创建一个模型实例。我不一定想要数据库模型中的所有 xml 属性,但我不想手动构造字典(或逗号分隔的关键字参数列表)或手动从字典中删除不是的键在模型中,因此不是模型实例构造函数的有效关键字参数。

所以当我在 xml 中有一个字段不是模型中的有效字段时,我最终会收到以下错误。有谁知道在使用 **dict 传递参数时如果对函数无效则忽略 kwargs 的一般方法(特别是 django orm 模型构造函数)?

追溯(最近的调用最后): 文件“./load_games.py”,第 189 行,位于 atbat = Atbat(**atbat_dict) 文件“/usr/local/lib/python2.7/dist-packages/django/db/models/base.py”,第 555 行,在 init raise TypeError("'%s' 是这个函数的无效关键字参数"% list(kwargs)[0]) TypeError: 'des' 是此函数的无效关键字参数

最佳答案

您可以使用 meta API 过滤 dict 以查找作为模型实际字段的键:

fields = set(f.name for f in Model._meta.get_fields())
dct = {k: v for k, v in dct.items() if k in fields}
m = Model(**dct)

关于python - 使用 **dict 时忽略无效的关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47371946/

相关文章:

python - 重新排列 pandas 数据框以形成分组条形图

sql-server - 从 mssql 中具有特定根节点的表中查找 XML 记录

django - DRF PrimaryRelatedField 写入时和 NestedSerializer 读取时?

c# - 如何使用 XPath 选择带有引号字符的文本?

python - 如何从静态页面获取值并将其发布到模型中

django - Django 模型是否知道它是从哪个数据库加载的以及如何访问此信息?

python - python gui中的utf-8编码

python - 提前比较两个或多个 csv 文件

python - 使用来自另一个命令的自定义类调用 python click 命令

java - 在此示例中,如何从 View 组中仅删除删除按钮