Python:内联if语句别无效

时间:2014-08-14 23:17:20

标签: python django if-statement conditional inline

如果Django Model' s字段与条件匹配,则将其分配给该值。

g = Car.objects.get(pk=1234)
g.data_version = my_dict['dataVersion'] if my_dict else expression_false # Do nothing??

在这种情况下我该怎么办?我们无法if conditional else pass

我知道我能做到:

if my_dict:
    g.data_version = my_dict['dataVersion']

但我想知道是否有办法内联expression_true if conditional else do nothing

1 个答案:

答案 0 :(得分:8)

不,你不能完全按照你所描述的那样做,因为它没有意义。您正在分配变量g.data_version ...所以您必须分配一些东西。你所描述的就像写作:

g.data_version =  # There is nothing else here

这显然是无效的语法。实际上,没有理由这样做。你应该这样做:

if my_dict:
    g.data_version = my_dict['dataVersion']

g.data_version = my_dict['dataVersion'] if my_dict else None # or 0 or '' depending on what data_version should be.

从技术上讲,你也可以这样做:

g.data_version = my_dict['dataVersion'] if my_dict else g.data_version

如果您只想更新g.data_version,如果您的dict存在,但这比仅使用普通的if语句更不易读和优雅。