【问题标题】:How can i fill django model from external API?如何从外部 API 填充 django 模型?
【发布时间】: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 部电影,而不必一一添加。 我该怎么做,请帮忙。 谢谢。

【问题讨论】:

    标签: python json django api django-models


    【解决方案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 模型规则、默认值、验证、信号等。

    【讨论】:

    • 谢谢,就这样。
    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多