auth_user.username дает объект 'NoneType' не имеет атрибута 'username' - PullRequest
0 голосов
/ 25 сентября 2018

, поэтому я пытаюсь сохранить 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, чтобы иметь возможность войти снова

1 Ответ

0 голосов
/ 26 сентября 2018

auth.user - это запись текущего зарегистрированного пользователя, поэтому None, когда ни один пользователь не вошел в систему. Вы можете изменить свой код следующим образом:

Field('Usuario', default=auth.user.username if auth.user else None)
...