2013-04-15 1 views
0

에 특정 값을 업데이트 :장고 -이 라인에서 잘못 무엇 결과의 검색어

for i in message_list: 
    message_stream = Messages.objects.filter(OrderID = i.OrderID).order_by('-MessageLocalID') 
    if message_stream[0].MessageTypeName != 'MessageAck': 
     message_stream[0].status = message_stream[0].MessageTypeName 
     message_stream[0].save() 

status 필드는 DB 여기에 저장되지 않습니다. 내가 여기서 오해하는 것은 무엇인가?

+0

스택 트레이스를 게시 할 수 있습니까? –

+0

오류가 표시되지 않습니다. 'message_stream [0] .update (status = Message_stream [0] .MessageTypeName)'와 같이 저장 대신 update 메소드를 사용할 때만 오류가 표시됩니다. 더 많은 것을 명확히 할 수 있다면 알려 주시기 바랍니다 :) – securecurve

+0

'filter'가 아닌'get'을 사용해야합니다. – LarsVegas

답변

0

DB 자체에 문제가있어서 새로운 값으로 업데이트해야하는 상태 필드가 2자를 초과하는 값을받을 수 없습니다. 장고 DB 마이그레이션을 사용하고 상태 필드를 확장하여 문제를 해결했습니다.

이 명령은 아무런 문제없이 마법처럼 일했다 :

NpMessages.objects.filter(NPOrderID = i.NPOrderID, MessageTypeName = 'Request').update(status = message_stream[1].MessageTypeName) 

하고 저장 문을 제거, 그것은 eitherway 작동하지 않았다로!

+0

PEP-8 검사기를 설치해야합니다. 코드를 읽는 것은 매우 어렵습니다. –

+0

조언을 주셔서 감사합니다, 나는 그것을 고려할 것입니다 :) – securecurve