我的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部电影而不必逐一添加每部电影。 我怎么能这样做,请帮忙。 谢谢。
答案 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模型规则,默认值,验证,信号等。