Turbogears noobie在将它们添加到数据库之前,我如何才能看到kw的内容

时间:2013-08-09 09:23:22

标签: python turbogears

我是蟒蛇/ Turbogears noob,我真的需要你的帮助。我阅读了所有可以找到并且相信与我的问题相关的教程。

我需要为kw创建一个方法/函数来获取密钥作为从数据库中提取的字段并使它们为空,然后在提交表单后使用表格中的值填充键和然后存储在数据库中。

问题是根据数据库中的字段数据类型不正确。我一直收到这个错误:'str'对象没有属性'_sa_instance_state'...

请帮忙!

数据库结构:

orders table:
id
client_id
notes
offer_id
delivery_place_id
etc

我还应该提一下,大多数都是分配给其他表中其他字段的外键......

python代码:

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) 

1 个答案:

答案 0 :(得分:0)

查看tw2.sqlahttps://github.com/toscawidgets/tw2.sqla/blob/develop/tw2/sqla/widgets.py)中的验证程序,您应该可以将它们用作表单上的字段验证程序。 它们将确保在* _id字段中输入的id转换为其对应的模型对象(如果不存在则会引发验证错误)。