将图像添加到数据库时,Django'int'对象不可下标显示

时间:2018-09-07 17:59:16

标签: python django python-3.x django-models django-views

我正在将多个图像插入数据库。我已保存新的图像名称为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'

感谢

1 个答案:

答案 0 :(得分:1)

在您的代码中,for循环遍历字典的键。因此图像是012等。

如果这确实是一本字典(语法确实不正确),则其外观应为:

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