페이로드는 인버터에서 판독 한 데이터를 나타내는 쉼표로 구분 된 데이터입니다. 이 판독 값은 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 문이 시작되는 곳에서 오류가 발생합니다. 위의 코드를 수정하여 원하는대로 컴파일하고 작동하도록하려면 어떻게해야합니까?
훌륭한 사전을 사용했습니다. 귀하의 대답은 Lycha 's와 유사하지만 더 잘 설명했습니다. 시간과 대답에 감사드립니다. – Linger