我开始使用Django Rest Framework,我的应用基于Django 1.11版本。
我有一个型号名称Test。 现在,我只需要在应用启动时填充一次该模型,即可从REST API调用中接收数据。我读到有关app.ready()的文章,但我不知道如何整理这些步骤。
所以基本上当应用启动时:
最好通过调用object.count()来检查表A中是否存在某些数据。
如果是,什么也不做。
如果没有,请调用第三方API并保存模型。
这也可以在Admin上完成吗?
答案 0 :(得分:2)
有几种方法可以做到这一点。最干净的方法是像这样create a new custom command:
# app/management/commands/updateappdb.py
from django.core.management.base import BaseCommand, CommandError
from polls.models import Question as Poll
class Command(BaseCommand):
help = 'Update DB'
def handle(self, *args, **options):
# Update code here
if not YourModel.objects.exists():
# do something
self.stdout.write(self.style.SUCCESS('Successfully Updated')
然后您可以使用以下命令作为示例:
python manage.py updateappdb && python manager.py runserver
还有另一种方法,将它们写在urls.py
中。每当服务器启动时,Urls.py就会加载一次。因此,在urls.py中,您可以这样尝试:
from django.confs.urls.defaults import *
from your_file import data_import_function # which has the data load functionality
urlpatterns = [...]
data_import_function()
但是在这两种方法中,我更喜欢第一种。因为它将更加可重用,并且如果您希望定期更新,则可以将此自定义命令与cronjob集成。