在 Django 模型中处理额外的 kwargs

Dealing with additional kwargs in Django models

我想在 Django 模型中将一些带有 kwargs 的参数传递给 get_or_create() 函数,但是如果 kwargs 中有一些模型中不存在的额外键值,一个会出现错误。有什么方法可以传递字典并且函数本身处理额外的键吗?

我认为您可以在 Django 源代码中找到更好的解决方案,但是,您也可以创建一个函数来从数据中删除额外的键。

def remove_extra_keys(model, data: dict) -> dict:
    for filed_name in data:  # <- possibly for better reading u can use here data.keys()
        if not getattr(model, filed_name, None):
            data.pop(filed_name)
    return data

p = MyModel.objects.get_or_create(**remove_extra_keys(model=MyModel, data=my_data))