Как получить динамические данные на веб-странице с помощью моделей Django?

У меня есть требование, когда выпадающее меню, использующее модели Django на моей веб-странице, должно иметь живые/динамические данные со стороннего сервера.

Например, текущие данные модели - emp1,emp2, но если сторонний сервер добавит emp3, то я должен иметь возможность отображать emp1,emp2,emp3 на моей веб-странице, когда пользователь обновляет веб-страницу.

Как я могу достичь этого, используя модели django? (Я знаю, что мы можем сделать это без моделей Django, сделав вызов ajax прямо с веб-страницы, но я не могу этого сделать из-за ограничений безопасности, поэтому мне нужно получить эти данные в бэкенде, а с моделями Django в настоящее время я могу получить данные в моей базе данных только один раз, когда сервер запущен, а НЕ когда сторонний сервер обновляет свою базу данных).

Я думаю, что нашел ответ на эту конкретную ситуацию, в которой я застрял. Я постараюсь ответить на этот вопрос здесь, чтобы он мог быть полезен кому-то еще:

Мой проблемный код ранее в моей views функции:

for key in sorted(myvar):
         value = City(name=key)
         value.save()
         for items in myvar[key]:
             value2 = Country(name=items,site=value)
             value2.save() ```
So the above code is basically updating my models called City and Country from the data stored in myvar variable. 

However, I was updating the models every single time the page loads (so that the models has the latest and most up to data data). But that made the models data inconsistent when multiple users are using the webpage. For eg., when user A loads the webpage, he or she gets some content, now when user B loads the webpage, he or she gets some other content because my views.py has updated the models with the latest data available in ```myvar```. This is not a problem for the user B but it is a problem for user A which is relying on the older models data which doesn't exist any more.

*How I solved this problem*:

By checking if the data I am adding already exists or not in the models, I will update my models ONLY if the data doesn't exist (I am verifying this using the ```.exists()``` function).

 for key in sorted(myvar):
     if City.objects.filter(name = key).exists():
         pass
     else:
         value = City(name=key)
         value.save()
         for items in myvar[key]:
             value2 = Country(name=items,site=value)
             value2.save()

This way, at least, the models data will get updated ONLY when there's a need to update the models based on the new content in ```myvar```.
Вернуться на верх