DRY版本的python if语句

时间:2013-02-17 22:59:41

标签: python django

我正在尝试进行数据库插入,其中包含一个大约有20行的表。插入内容如下所示:

if not title.name:
    title.name = data['title']
if not title.synopsis:
    title.synopsis = data['synopsis']
...

基本上,如果每个数据库列都不存在,我会更新这些行。

什么是更清洁,更有效的方法呢?

3 个答案:

答案 0 :(得分:3)

for column in ('name', 'synopsis', 'something', 'other'):
    if not getattr(title, column):
        setattr(title, column, data[column])

答案 1 :(得分:1)

您可以使用or

title.name = title.name or data['title']
title.synopsis = title.synopsis or data['synopsis']

或者您可以动态地执行此操作:

for attr in data:
    if not getattr(title, attr):
        setattr(title, attr, data[attr])

答案 2 :(得分:1)

使用getattrsetattr函数:

for attribute in ['title', 'synopsis']:
   if not getattr(title, attribute):
       setattr(title, attribute, data[atribute])

您可以阅读有关他们的更多信息here