如何从外部API填充django模型?

时间:2016-02-07 16:39:42

标签: python json django api django-models

我的django项目中有一个电影模型:

class Movie(models.Model):
    title = models.CharField(max_length=128, blank=False)
    description = models.TextField()
    movie_length = models.CharField(max_length=20)
    director = models.CharField(max_length=50)
    rating = models.FloatField(validators=[MinValueValidator(0.0),MaxValueValidator(10.0)])
    created_at = models.DateTimeField(auto_now_add=True)
    image = models.ImageField(upload_to='movie_img/')
    category = models.CharField(max_length=50)

我想使用python API包装器填充数据库,用于himoviedb.org API,例如https://github.com/celiao/tmdbsimple/https://github.com/wagnerrp/pytmdb3/。但我不知道该怎么做。我只想一次性放100部电影而不必逐一添加每部电影。 我怎么能这样做,请帮忙。 谢谢。

1 个答案:

答案 0 :(得分:3)

首先,您必须将API中的数据读入Python对象。假设你现在有一个元组列表L,每个元组都是一个电影的记录。

您的脚本可能是load_from_api.py

#!/usr/bin/env python
import os
import sys

# ... read the data from the API
# ... so L = [("movie title","movie description..."),("movie2 title",..)]

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
import django
django.setup()

from yourapp.models import Movie    
for movie in L:
    m = Movie(title=movie[0],
              description=movie[1],
              ...
              )
    m.save()

然后只需运行脚本。 请注意,您可以使用SQL将数据直接加载到数据库,但不建议这样做,因为这会忽略django模型规则,默认值,验证,信号等。