ペイロードは、インバーターからの読み取り値を表すコンマ区切りのデータチャンクです。これらの読み取り値は、InverterHistoryというテーブルに保存する必要があります。各フィールドに常に値があるとは限りません。モデルは、フィールドにnull/blankを許可するようにすでに設定されています。そのため、フィールドに割り当てる前に、値が存在するかどうかを確認しようとしています。これが私がこれまでに持っているものです:
i = Inverter.objects.get(mac=u)
payload.reverse()
try:
ac_volts_a = str(payload.pop())
ac_volts_b = str(payload.pop())
ac_volts_c = str(payload.pop())
ac_current_a = str(payload.pop())
ac_current_b = str(payload.pop())
ac_current_c = str(payload.pop())
dc_volts = str(payload.pop())
dc_current = str(payload.pop())
kw_out = str(payload.pop())
mwh_total = str(payload.pop())
current_time = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
i_data = InverterHistory(
inverter = i,
if ac_volts_a:
voltage_ac_a = float(ac_volts_a),
if ac_volts_b:
voltage_ac_b = float(ac_volts_b),
if ac_volts_c:
voltage_ac_c = float(ac_volts_c),
if ac_current_a:
current_ac_a = float(ac_current_a),
if ac_current_b:
current_ac_b = float(ac_current_b),
if ac_current_c:
current_ac_c = float(ac_current_c),
if dc_volts:
voltage_dc = float(dc_volts),
if dc_current:
current_dc = float(dc_current),
if kw_out:
kwout = float(kw_out),
if mwh_total:
mwh = float(mwh_total),
recordTime = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S"))
i_data.save()
except Exception, e:
print >> sys.stderr, "Error While Recording Inverter History"
print >> sys.stderr, e
raise Http404
私はPythonにかなり慣れていないので、上記を適切にコーディングする方法がわかりません。コードをコンパイルしようとすると、ifステートメントが始まる場所でエラーが発生します。上記のコードを修正して、希望どおりにコンパイルおよび動作するようにするにはどうすればよいですか?