Skip to main content
 首页 » 编程设计

python之我如何从外部 API 填充 Django 模型

2024年08月23日27davidwang456

我的 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 包装器为 themoviedb.org API 填充数据库 https://github.com/celiao/tmdbsimple/或 https://github.com/wagnerrp/pytmdb3/ .但我不知道该怎么做。我只想一次放入大约 100 部电影,而不必逐一添加每部电影。 我该怎么做,请帮忙。 谢谢。

请您参考如下方法:

首先,您必须将数据从 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 模型规则、默认值、验证、信号等。