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

python-使用**dict时忽略无效的关键字参数,python,xml,django,keyword-argument,Python,Xml,Django,Keyword Argument,我使用django和etree将xml内容刮到数据库中。我想使用etree root.attrib从xml创建一个dict,然后使用Model**dict在Django中创建一个模型实例。我不一定要数据库模型中的所有xml属性,但我不想手动构造dict或逗号分隔的关键字参数列表,也不想手动从dict中删除不在模型中的键,因此这些键对于模型实例的构造函数来说不是有效的关键字参数 因此,当我在xml中有一个字段不是模型中的有效字段时,我最终得到了下面的错误。有没有人知道一种方法可以让python在一

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

因此,当我在xml中有一个字段不是模型中的有效字段时,我最终得到了下面的错误。有没有人知道一种方法可以让python在一般django orm模型构造函数中特别忽略kwargs,如果在使用**dict传递参数时,kwargs对函数无效

回溯最近一次呼叫上次: 文件./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”是此函数的无效关键字参数%listkwargs[0] TypeError:“des”是此函数的无效关键字参数

您可以使用以下选项筛选dict中作为模型实际字段的关键字:

您可以使用以下选项过滤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)
while True:
    try:
        atbat = Atbat(**atbat_dict) 
    except TypeError as e:
        bad_key = str(e).split('\'')[1]
        atbat_dict.pop(bad_key)
        continue
    break