我正在将多个图像插入数据库。我已保存新的图像名称为Dictonary
。但是在将数据插入表中时出现错误:'int' object is not subscriptable'
我到处搜索,但找不到解决方法。
下面是Dictonary
的样子
{
"0" = {
"blog_id" = "".
"blog_image_path" = "07-09-2018__17-54-152069weather.jpg".
"is_deleted" = 0
}.
"1" = {
"blog_id" = "".
"blog_image_path" = "07-09-2018__17-54-152069user.png".
"is_deleted" = 0
}.
"2" = {
"blog_id" = "".
"blog_image_path" = "07-09-2018__17-54-152069tick.png".
"is_deleted" = 0
}
}
现在添加数据库时
for image in blog_images_data:
blog_image_data = BlogImages(blog_id=int(blog_id), blog_image_path=image['blog_image_path'], is_deleted=int(image['is_deleted']))# I GET ERROR IN THIS LINE
blog_image_data.save()
我什至将数据类型更改为INT
,但错误仍然存在。
下面是模型详细信息
class BlogImages(models.Model):
blog_image_id = models.AutoField(primary_key=True)
blog = models.ForeignKey(Blog, null=True, on_delete=models.CASCADE)
blog_image_path = models.TextField(null=True)
is_deleted = models.SmallIntegerField(default=0, editable=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'tbl_blog_images'
答案 0 :(得分:1)
在您的代码中,for
循环遍历字典的键。因此图像是0
,1
,2
等。
如果这确实是一本字典(语法确实不正确),则其外观应为:
for blog_id, image in blog_images_data.items():
blog_image_data = BlogImages(
blog_id=int(blog_id),
blog_image_path=image['blog_image_path'],
is_deleted=int(image['is_deleted'])
)
blog_image_data.save()
因此,我们用.items()
遍历 key-value 对,并以image
作为下级字典进行处理。
我们可以执行对象的创建并将其保存在一个调用中,方法如下:
for blog_id, image in blog_images_data.items():
blog_image_data = BlogImages.objects.create(
blog_id=int(blog_id),
blog_image_path=image['blog_image_path'],
is_deleted=int(image['is_deleted'])
)
注意:通常模型具有单名称,因此
BlogImage
而不是BlogImages
。