如何使用django为文件列表中的每个文件创建外键集

问题描述 投票:0回答:1

我正在尝试使用Django将多个图像上传到我的数据库。我希望每个文件作为主要产品的外键单独存储。所以基本上我的意思是会有产品,然后每个产品将有多个外键是图像。 Django根本没有将图像存储到数据库中。这是我的代码:

class product(models.Model):
    title = models.CharField('', max_length=100,  db_index=True)
    price = models.CharField('', max_length=100,  db_index=True)
    description = models.CharField('', max_length=100,  db_index=True)

class productimage(models.Model):
    product = models.ForeignKey(product, on_delete=models.CASCADE)
    product_images = models.FileField(blank=True)

if request.method == "POST":
    title = request.POST.get("title")
    price = request.POST.get("price")
    description = request.POST.get("description")
    products = product(title=title,description=description,price=price)
    products.save()
    for image in request.FILES.getlist("images"):
        product_images = image
        products.productimage_set.create(product_images = product_images)
    return render(request,'selling/addproduct.html')

所以基本上我希望每个产品都有一个存储为主要产品的外键的图像列表。

python django view model
1个回答
1
投票

我觉得你有点困惑 - 使用_set后缀是通过反向遍历得到一个外键列表。要创建它们,您可以一次创建一个productimage,然后使用_set获取它们。

例:

...
for image in request.FILES.getlist("images"):
    productimage.objects.create(product=product, product_images=image)
...

然后通过product实例获取图像:

product.product_images_set.all()
© www.soinside.com 2019 - 2024. All rights reserved.