是否可以简化这个:
def method(self, **kwargs):
if kwargs.get('profile_id') is None:
kwargs['profile_id'] = 'something1'
if kwargs.get('status') is None:
kwargs['status'] = 'something2'
if kwargs.get('account_type') is None:
kwargs['account_type'] = 'something3'
if kwargs.get('external_account_id') is None:
kwargs['external_account_id'] = 'something4'
if kwargs.get('vendor') is None:
kwargs['vendor'] = 'something5'
if kwargs.get('created_timestamp') is None:
kwargs['created_timestamp'] = 'something6'
return ClassOne.objects.create(**kwargs)
这行得通,但我只是好奇是否有更优雅的东西。我正在考虑做这样的事情:
kwargs['profile_id'] = kwargs.get('profile_id') or 'something1'
请您参考如下方法:
.get() 有一个可选的第二个参数,这是默认值。
kwargs['profile_id'] = kwargs.get('profile_id', 'something1')
此外,除了在 if 语句中调用 get(),您还可以使用
if 'profile_id' not in kwargs:
请注意,这些解决方案不会替换字典中显式的 None 值。
您可以为所有字段使用默认值字典,然后合并它们。
defaults = {"profile_id": "something1", "status": "something2", ...}
kwargs = {**defaults, **kwargs}
