2012-01-04 63 views
1

我從外部地方數據庫中提取數據,該數據庫返回有關位置信息的JSON。我想保存儘可能多的信息,但不是每一行都有所有信息。我想:快捷方式說:「如果這存在於字典中,保存爲變量。如果不存在,忽略」在django

  location, created = Location.objects.get_or_create(
       name=info['name'], 
       lat=info['location']['lat'], 
       lng=info['location']['lng'], 
       address=info['location']['address'], 
      ) 

但是對於某些位置,地址不存在,所以這會引發錯誤。如果有一個簡短的方法來做到這一點,並避免大量的if .. else語句的字符串?

回答

4

您可以使用dict方法get

location, created = Location.objects.get_or_create(
       name=info['name'], 
       lat=info['location']['lat'], 
       lng=info['location']['lng'], 
       address=info['location'].get('address', None), 
      ) 
0

另一種方法是使用try-except塊。

try: 
    location, created = Location.objects.get_or_create(
       name=info['name'], 
       lat=info['location']['lat'], 
       lng=info['location']['lng'], 
       address=info['location']['address'], 
      ) 
except: 
    pass 
+0

但是,如果地址不存在,什麼都不會創建對不對?我仍然想用存在的信息創建位置。 – Brenden 2012-01-04 18:21:50

+0

刪除除了後通過,並添加您需要的任何代碼。 – SkyFox 2012-01-04 22:01:42

相關問題