python - 从 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 发送到表。
解决方案
这是您使用 Django 模型将数据存储在数据库中的方式。
title = data['results']['original_title']
GetList.objects.create(title=title)
此外,您可以跳过 GetList 模型上的 id 字段,因为所有 Django 模型都有一个默认的自动递增“id”字段。为了便于阅读,我还建议将GetList重命名为Movie。
推荐阅读
- groovy - Groovy 中这个脚本字段的含义是什么?
- python - TensorFlow 模型恢复问题
- verilog - 两个主组件控制同一个从设备(地址分配),英特尔 Quartus Prime Platform Designer (Qsys)
- vba - VBA Excel - 生成实数随机数,检查结果是否存在于给定范围内
- php - 在循环中替换数组中的空键
- sql - 如何在 SQL Server 中返回动态十进制数据类型?
- java - 如何使用 Glide for android 压缩和降低图像质量
- react-native - 排毒安卓“detox:compileMinReactNative44DebugJavaWithJavac”错误
- javascript - 如何将字符串货币值转换为整数
- python - 从 3d DataArray 中对特定切片的数组值进行排序