Вы можете добавить поле ссылки, указывающие на db.auth_user
таблицы (или любой другой таблицы, в которой хранятся пользовательские данные):
db.define_table('review',
...,
Field('reviewer', 'reference auth_user', default=auth.user_id, writable=False),
...)
С выше кода, значение по умолчанию для поля «рецензент» является ID текущего пользователя. Поле не доступно для записи, поэтому у пользователя нет возможности изменить его (в форме ввода отзыва вы также можете установить свой атрибут readable
на False
, так как нет необходимости, чтобы автор его видел).
Затем, чтобы отобразить имя рецензента вместе с обзором, вы можете либо сделать join, либо использовать recursive select (первый более эффективен, если вы показываете множество отзывов сразу, так как для метода рекурсивного выбора требуется отдельный запрос к базе данных чтобы получить каждого автора обзора).
Я ничего не знаю о web2py, но, предположительно, вы можете сохранить имя отправителя в своей базе данных так же, как вы сохранили текст обзора. Или ваш вопрос «как определить имя человека, использующего мою форму?»? Я не думаю, что это то, что вы можете извлечь из своего пользовательского агента или чего-то другого - у вас должно быть поле ввода для него. – Kevin
Да, это то, к чему я стремился, могу ли я автоматически сохранить имя пользователя в базе данных обзора вместе с их обзором. Без них приходится вводить себя. I. Предварительно заполняйте поле пользователя своими данными. – Gareth