簡體   English   中英

python-使用** dict時忽略無效的關鍵字參數

[英]python - ignore invalid keyword argument when usking **dict

我正在使用django和etree將xml內容抓取到數據庫中。 我想使用etree(root.attrib)從xml創建一個字典,然后使用Model(** dict)在Django中創建一個模型實例。 我並不一定要數據庫模型中的所有xml屬性,但我不想手動構造dict(或者用逗號分隔的關鍵字參數列表)或從dict中手動刪除那些不是在模型中,因此不是模型實例的構造函數的有效關鍵字參數。

因此,當我在xml中有一個不是模型中的有效字段的字段時,最終收到下面的錯誤。 有誰知道一種通用的方法(特別是Django orm模型構造函數)來獲取python來忽略kwargs(如果使用** dict傳遞參數時對函數無效)?

追溯(最近一次通話最后一次):文件“ ./load_games.py”,行189,在atbat = Atbat(** atbat_dict)文件“ /usr/local/lib/python2.7/dist-packages/django/db/ models / base.py“,第555行,在init中引發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)
while True:
    try:
        atbat = Atbat(**atbat_dict) 
    except TypeError as e:
        bad_key = str(e).split('\'')[1]
        atbat_dict.pop(bad_key)
        continue
    break

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM