所以我试图保存要与填写表单的用户一起保存的sqlform。
db = DAL("sqlite://storage.sqlite")
db.define_table('Pedido',
Field('Usuario',default=auth.user.username,readable=False, writable=False),
Field('Nome','string'),
Field('Telefone', 'string',),
Field('Email', 'string'),
Field('CEP','string'),
Field('Rua', 'string'),
Field('Tipo_de_cliente',requires=IS_IN_SET(['Cliente Fisico', 'Cliente Juridico'])),
Field('Tipo_de_servico', requires=IS_IN_SET(['Reparo', 'Ajusto', 'Confecção','Outros'])),
Field('Tipo_de_peca', requires=IS_IN_SET(['Camisa', 'Jaqueta', 'Saia','Calça','Vestido','Shorts','Camiseta'])),
Field('Descricao', 'text'),
Field('Data_de_recebimento_do_pedido','date'),
Field('Data_de_entrega','date'),
Field('Valor','double'),
Field('Tipo_Pagamento',requires=IS_IN_SET(['Dinheiro','Cartão','Cheque'])),
Field('Pago','boolean'))
使用上面的代码,只有在用户登录后,我才能保存表单,否则会显示
'NoneType' object has no attribute 'username'
和我的控制器
@auth.requires_login()
def pedido():
Pedido = SQLFORM(db.Pedido)
Pedido.element('input[type=submit]')['_onclick'] = "return confirm('Deseja salvar?');"
if Pedido.process().accepted:
response.flash = 'Salvo com sucesso'
return dict(Pedido=Pedido)
我已经四处张望,每个答案都行不通, 有人对此错误有解决方案吗?无论我在哪里注销,都无法再次登录,我必须在usuario字段中添加注释,以便无法再次登录
答案 0 :(得分:0)
auth.user
是当前登录用户的记录,因此,如果没有用户登录,则为None
。您可以按以下方式更改代码:
Field('Usuario', default=auth.user.username if auth.user else None)