Это просто вопрос создания модели для кнопок, а затем
запрашивает базу данных как обычно?
Модель может быть что-то вроде Button (_id, last_clicked as timestamp, user_id)
При запросе вы можете просто отсортировать по timestamp
и LIMIT
1, чтобы получить последний клик. Не перезаписывая оригинальное значение, это обеспечит немного более быструю запись.
Если вы не хотите, чтобы кнопки работали одинаково для каждого пользователя, вам придется создать сопоставление кнопки с пользователем, который ее щелкнул. Даже если ваши текущие требования не нужны, создайте расширяемое решение, в котором сопоставление пользователя с этой таблицей довольно просто.
Как мне Django обновить базу данных через 30 секунд, чтобы сделать
статус кнопки перейти от отключенного обратно к включенному?
Я не изменяю базу данных без привязки запроса клиента к изменению. Это обеспечивает параллелизм и контроль доступа. А также имеет более высокую предсказуемость для текущего состояния данных. После этого я бы предложил не обновлять БД по истечении времени дельта (30 секунд).
Вместо этого вы можете просто сравнить last_clicked
отметку времени и вычислить дельту на стороне сервера перед отправкой ответа или на стороне клиента.
Это решение может быть важным, рассмотрим сценарий, когда время клиента в его системе отличается от времени сервера.
Когда пользователь нажимает кнопку, он отключается, но
это только сделает его отключенным в базе данных. Что является правильным
способ фактически отключить кнопку без обновления страницы на
сторона клиента? Должен ли я просто отключить кнопку в JavaScript для 30
секунд, а затем, если они попытаются обновить страницу, то представления будут
посмотрите запрос на список продуктов, и он проверит
база данных для состояния каждой кнопки, и она будет обслуживать кнопку
правильно?
Вам нужно будет сделать запрос POST
, чтобы связать метку времени нажатия кнопки с БД. Вам также необходимо убедиться, что запрос POST
выполнен успешно, поскольку неудачный запрос не сохранит данные в случае закрытия браузера.
После выполнения вышеупомянутых двух действий вы можете отключить кнопку только со стороны клиента, не пытаясь получить кнопку last_clicked
timestamp.