2013-08-09 4 views
0

저는 python/Turbogears 놈입니다. 정말 도움이 필요합니다. 내가 찾을 수있는 모든 자습서를 읽고 내 문제와 관련이 있다고 생각합니다.Turbogears noobie 데이터베이스에 추가하기 전에 kw의 내용을 어떻게 볼 수 있습니까?

데이터베이스에서 추출한 필드로 키를 가져와 키가 비어있게하려면 kw에 대한 메소드/함수를 작성해야하며 양식을 제출 한 후에 양식의 값으로 채워지는 키를 제출해야합니다 데이터베이스에 저장됩니다.

문제는 데이터 형식이 데이터베이스의 필드에 따라 올바르지 않다는 점입니다. 이 오류가 계속 발생합니다. 'str'객체에 '_sa_instance_state'속성이 없습니다 ...

도와주세요!

데이터베이스 구조 : 나는 또한 그들의 대부분은 다른 테이블에서 다른 분야에 할당 된 외부 키가 언급해야

orders table: 
id 
client_id 
notes 
offer_id 
delivery_place_id 
etc 

...

파이썬 코드 :

class OrderController(RestController): 
model = m.Order 


order_table = OrderTable(DBSession) 
order_filler = OrderTableFiller(DBSession) 
order_add_form = OrderAddForm(DBSession) 
order_edit_form = OrderEditForm(DBSession) 
order_edit_filler = OrderEditFiller(DBSession) 


@validate(order_add_form, error_handler = None) 
@expose("maivic.templates.order.new") 

def new(self, **kw): 
    #assert len(kw['notes'])==0 
    #flash ('Rainbow honey double rainbow') 
    """aici trebuie creata o metoda pentru a vedea ce date avem inainte de form si 
    dupa submit""" 
    #tmpl_context.widget = self.order_add_form  
    if 'sprox_id' in kw: 
     del kw['sprox_id'] 
    tmpl_context.widget = self.order_add_form 
    #1 start afiseaza new dar nu face nimic 
    if len(kw) > 0: #pt a nu aduga un order nul 
     """  
     for k in kw.keys(): 
      if not kw[k]: 
       del kw[k]""" 

     print kw 
     """if 'client' in kw and not isinstance(kw['client'], list): 
      kw['client'] = [kw['client']] """ 
     order = m.Order(**kw) 
     DBSession.add(order) 
     flash('order added') 

     #redirect('/order') 
    else: 
     print "empty form" 

    #end1 
    return dict(page="new", value = kw) 
+0

코드를 읽기가 약간 어렵습니다 ... 영어로 설명을 쓰거나 쓸모가 없으면 삭제할 수 있습니까? – moschlar

+0

또한 order_add_form 코드를 게시하십시오! – moschlar

답변

0

봐 유효성 검사기에서 tw2.sqla (https://github.com/toscawidgets/tw2.sqla/blob/develop/tw2/sqla/widgets.py)이면 폼의 필드 유효성 검사기로 사용할 수 있어야합니다. * _id 필드에 입력 한 ID가 해당 모델 객체로 변환되는지 확인합니다. 존재하지 않으면 유효성 검사 오류를 발생시킵니다.

+0

감사합니다 !!! 나 그렇게 할거야! –