首页 > 解决方案 > 从 json 中获取特定数据并存储在 django 的表中

问题描述

我正在尝试从外部 api 获取特定数据并将其存储到我在 django 中的表中。我能够获取所有数据,但是如何仅将特定数据发送到表中。

我的 view.py 文件:

def post(self, request):

    api_key = "API-KEY"
    response = requests.get('https://api.themoviedb.org/3/movie/popular?api_key={}'.format(api_key))
    data = json.loads(response.text)

    serializer = GetListSerializers(data = data)
    # serializer = GetListSerializers(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我的 Model.py 文件:

class GetList(models.Model):
    movieid = models.IntegerField()
    title = models.CharField(max_length=10)

    def __str__(self):
        return self.title

我的 serializer.py 文件:

class GetListSerializers(serializers.ModelSerializer):
    class Meta:
        model = GetList
        fields = ('movieid', 'title')

api 的输出是一个字典,即

{
"total_results": 10000,
"total_pages": 500,
"page": 1,
"results": [
    {
        "original_title": "Ad Astra",
        "vote_average": 6,
        "id": 419704,
        "poster_path": "/xBHvZcjRiWyobQ9kxBhO6B2dtRI.jpg",
        "backdrop_path": "/p3TCqUDoVsrIm8fHK9KOTfWnDjZ.jpg",
        "adult": false,
        "overview": "decades before boldly faced emptiness and silence in search of the unknown.",
        "original_language": "en",
        "genre_ids": [
            12,
            18,
            9648,
            878,
            53
        ],
        "video": false,
        "vote_count": 1749,
        "release_date": "2019-09-17"
    },....

我想将 id 和 title 发送到表。

标签: pythondjangodjango-modelsdjango-rest-frameworkdjango-views

解决方案


这是您使用 Django 模型将数据存储在数据库中的方式。

title = data['results']['original_title']
GetList.objects.create(title=title)

此外,您可以跳过 GetList 模型上的 id 字段,因为所有 Django 模型都有一个默认的自动递增“id”字段。为了便于阅读,我还建议将GetList重命名为Movie


推荐阅读