如何在Django中将文件保存到外键模型

时间:2019-02-16 23:20:09

标签: django django-models

我正在使用Django模型保存用户上传的图像。我希望每个图像都存储在productimage模型中,该模型是产品模型的外键模型,而productmodel模型是用户模型的外键模型。我的意思是:

用户----->产品------>产品图片

我想创建一个productimage模型的新实例,但是由于它是另一个外键的外键,因此似乎无法弄清楚该怎么做。 我不知道如何在要创建的外键中定位外键。例如,我尝试过:

request.user.product.productimage.create()

request.user.product_set.productimage_set.create()

request.user.product.productimage_set.create()

似乎什么也没有创建productimage模型的新实例。

class product(models.Model):
 user = models.ForeignKey(User, on_delete=models.CASCADE)
 product_title =  models.CharField(max_length=100, blank=True)
 product_price =  models.CharField(max_length=30, blank=True)
 product_description =  models.CharField(max_length=1000, blank=True)

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


def add(request):
if request.method == "POST":
    product_title = request.POST.get("product_title")
    product_price = request.POST.get("product_price")
    product_description = request.POST.get("product_description")
    request.user.product_set.create(product_title = product_title,product_price =product_price, product_description = product_description,)
    for file in request.FILES.getlist("filepond"):
        product_images = file
        request.user.product_set.productimage_set.create()###trying to create a new instance of productimage model for each file
return render(request,"main/add.html")

1 个答案:

答案 0 :(得分:1)

您已经在几行之前创建了产品;您只需要使用它即可。

product = request.user.product_set.create(product_title = product_title,product_price =product_price, product_description = product_description,)
for file in request.FILES.getlist("filepond"):
    product_images = file
    product.productimage_set.create()