2016-04-29 2 views
0

Как я могу сохранить & отображать имя пользователя, который отправляет форму, сохраненную в базе данных.Сохранение автора формы Web2Py

Например:

У меня есть форма, которая позволяет пользователям просматривать продукты. У меня тогда есть таблица, в которой перечислены эти обзоры. На столе я хочу указать каждое имя пользователя, кроме каждого обзора.

+0

Я ничего не знаю о web2py, но, предположительно, вы можете сохранить имя отправителя в своей базе данных так же, как вы сохранили текст обзора. Или ваш вопрос «как определить имя человека, использующего мою форму?»? Я не думаю, что это то, что вы можете извлечь из своего пользовательского агента или чего-то другого - у вас должно быть поле ввода для него. – Kevin

+0

Да, это то, к чему я стремился, могу ли я автоматически сохранить имя пользователя в базе данных обзора вместе с их обзором. Без них приходится вводить себя. I. Предварительно заполняйте поле пользователя своими данными. – Gareth

ответ

1

Вы можете добавить поле ссылки, указывающие на db.auth_user таблицы (или любой другой таблицы, в которой хранятся пользовательские данные):

db.define_table('review', 
    ..., 
    Field('reviewer', 'reference auth_user', default=auth.user_id, writable=False), 
    ...) 

С выше кода, значение по умолчанию для поля «рецензент» является ID текущего пользователя. Поле не доступно для записи, поэтому у пользователя нет возможности изменить его (в форме ввода отзыва вы также можете установить свой атрибут readable на False, так как нет необходимости, чтобы автор его видел).

Затем, чтобы отобразить имя рецензента вместе с обзором, вы можете либо сделать join, либо использовать recursive select (первый более эффективен, если вы показываете множество отзывов сразу, так как для метода рекурсивного выбора требуется отдельный запрос к базе данных чтобы получить каждого автора обзора).

+0

Еще раз спасибо! :) – Gareth

Смежные вопросы