首页 > 解决方案 > 如何在 django 中为我的产品模型上传多个图像?

问题描述

我想上传产品的多张图片,我该怎么做?Django 版本是 2.1 以及如何存储多个文件。使用python3

我的模型

class Product(models.Model):
owner = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
name = models.CharField(max_length=33, blank=True)
description = models.TextField()
postdate = models.DateTimeField(auto_now_add=True, blank=False)
duration = models.IntegerField(null=True, blank=True)
image = models.FileField(upload_to=product_directory_path, blank=False, default='default.jpg')

我的观点

def addProduct(request):
if request.method == 'GET':
    if request.user.is_authenticated:
        return render(request, 'postAd.html')

if request.method == 'POST' and request.FILES.get('image'):
    if request.user.is_authenticated:
        user = User.objects.get(id=request.user.id)
        owner = UserProfile.objects.get(email=user.email)
        image = request.FILES.get('image')
        name = request.POST['name']
        description = request.POST['desc']
        pr = Product(owner=owner, name=name, image=image, description=description, category=category, price=price, ptype=ptype)
        pr.save()
        return HttpResponseRedirect(reverse('ors:dashboard')) 

标签: djangopython-3.xdjango-modelsdjango-views

解决方案


你可以在模型中试试这个:

class Product(models.Model):
  owner = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
  name = models.CharField(max_length=33, blank=True)
  description = models.TextField()
  postdate = models.DateTimeField(auto_now_add=True, blank=False)
  duration = models.IntegerField(null=True, blank=True)
  image = models.FileField(upload_to='/image/, blank=False, 
  default='default.jpg')

class ImageProduct(models.Model):
  Product=models.ForeignKey(Product,on_delete=models.CASCADE)
  image=models.imageField(upload_to='/image/')

参考: https ://medium.com/ibisdev/upload-multiple-images-to-a-model-with-django-fd00d8551a1c


推荐阅读