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

Posted

技术标签:

【中文标题】如何从外部 API 填充 django 模型?【英文标题】:How can i fill django model from external API? 【发布时间】:2016-05-17 07:37:30 【问题描述】:

我的 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)

我想使用诸如 https://github.com/celiao/tmdbsimple/ 或 https://github.com/wagnerrp/pytmdb3/ 的 themoviedb.org API 的 python API 包装器来填充数据库。但我不知道该怎么做。我只想一次放大约 100 部电影,而不必一一添加。 我该怎么做,请帮忙。 谢谢。

【问题讨论】:

【参考方案1】:

首先,您必须将 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 将数据直接加载到 DB,但不建议这样做,因为这会忽略 django 模型规则、默认值、验证、信号等。

【讨论】:

谢谢,就这样。

以上是关于如何从外部 API 填充 django 模型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中从用户模型的字段自动填充和显示数据到来自不同应用程序的另一个模型?

如何使用flutter Dropdown小部件从Django REST API端点填充数据

如何在 Django 表单中使用外键自动填充变量?

如何从 Django 模板变量填充 jQuery Datepicker 小部件?

Django - 使用给定的 sql 转储创建其他模型并填充数据 [重复]

如何在 django 中更改模型时填充数据库字段