2013-09-16 1 views
0

Представьте, что у меня есть REST-сервер и мобильное устройство, которое извлекает данные из бэкэнд. Есть ли возможность отправить запрос с устройства и получить изменения только модели? Например, устройство получило и проанализировано следующая модель:Как получить изменения модели с истекшим сроком действия с использованием среды отдыха REST/Django

{ 
    id = 40, 
    vote_up_counter = 5, 
    message = 'This is awesome!', 
    author = 'Peter Morgan' 
} 

Теперь кто-то голосовали за это сообщение и модель изменение:

{ 
    id = 40, 
    vote_up_counter = 6, 
    message = 'This is awesome!', 
    author = 'Peter Morgan' 
} 

То, что я хотел бы иметь это ответ похож на , потому что мне не нужно снова получать сообщение и автора:

{ 
    id = 40, 
    vote_up_counter = 6 
} 

Есть ли способ реализовать это? Например. мои мобильные устройства сохраняют модель с меткой времени, и если она истек, я запрашиваю изменения/получаю обновление модели. Думаю, мне нужно добавить временную метку last_modified к моей модели или использовать что-то похожее на системы контроля версий.

Я знаю, что это довольно близко к услугам push, но я заинтересован, если можно получить обновление модели (используя более низкий трафик), когда вы тянете запрос на сервер. Буду признателен за любую помощь!

С наилучшими пожеланиями,

Майкл

EDIT:

Я должен упомянуть, что я хотел бы, чтобы послать запрос и обновить несколько объектов. Если я получаю объекты с идентификатором от 1 до 50, и только объект с идентификаторами 40 и 42 изменился, тогда я хотел бы получить ответ только объектов 40 и 42, а не всех других объектов.

+0

Это что-то большее, чем фильтрация столбцов, возвращаемых вашим бэкэндом? –

+0

Да, я так думаю. Представьте, что устройство получает версию с 10:00 утра (с 5 голосами), а модель меняется в 10:30 (до 6 голосов). Как отправить запрос на сервер, чтобы получить изменения модели с 10:00 до 10:30? Один из способов - получить всю модель, но я заинтересован в поиске «модели изменений» (третий пример кода). И в этом случае сообщение и автор никогда не будут меняться снова, его только vote_up_counter. Думаю, мне нужно было бы создать новое представление для этого, верно? – Michael

+1

Вопрос в том, хотите ли вы получить только измененные столбцы или все объекты, которые были изменены в течение этого временного интервала? –

ответ

1

Есть два возможных подхода здесь:

  1. Добавить несколько полей в модели. Они будут last_updated и fields_updated. Цели объясняются их именем, надеюсь.
  2. Использование django-audit-log. Затем вы запрашиваете таблицу журнала аудита, чтобы узнать, какие поля были обновлены с момента последней проверки.

В любом случае вам нужно будет добавить модель для отслеживания, когда пользователь обратился к строке в таблице.

+0

Спасибо, это именно то, что я искал!Сначала я попытаюсь сделать второй подход :) Но я думаю, что ваш первый подход также подойдет для моей проблемы. – Michael

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