0

我是django的新手。我正在尝试将多个图像添加到像博客文章这样的django模板。我没有得到如何去做。请帮帮我。如何在django中添加多个图像

我没有得到如何保存在单个图像领域 ,以及如何将图像上传多个图像

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    phone_no = models.CharField(max_length=10, null=True) 
    shop_name = models.CharField(max_length=244, null=True) 
    shop_address = models.CharField(max_length=200,null=True) 
    city = models.CharField(max_length=20, null=True) 
    country = models.CharField(max_length=20, null=True) 
    abn = models.CharField(max_length=11) 
    website = models.CharField(max_length=200, blank=True, null=True) 
    created_at = models.DateTimeField(default=datetime.now, blank=True) 
    updated_at = models.DateTimeField(default=datetime.now, blank=True) 
    Emg_no = models.CharField(max_length=10, null=True,blank=True) 
    payment_date = models.DateTimeField(default=datetime.now, blank=True) 
    area_code = models.CharField(null=True, blank=True, max_length=2) 
    landline_number = models.CharField(null=True, blank=True, max_length=9) 
    status = models.ForeignKey(Status, blank=True, null=True) 
    user_image = models.ImageField(upload_to='user_image') 

    def __str__(self): 
     return self.user.first_name 

    class Meta: 
     db_table = 'registration_userprofile' 

回答

0

您可以创建另一个图像模型上,并在您的用户model.Something这样的外键关系:

class Image(models.Model): 
    *image related fields* 

class User(models.Model): 
    *user fields*   
    image = models.Foreignkey(Image) 

请阅读django多对多字段和一对一字段。 Django Model relationship document.

1

让我们假设您想要一个与一个Userprofile相关的图片,并让用户一次上传多个图片。在你的models.py添加:

class Image(models.Model): 
    user = models.Foreignkey(UserProfile) 
    image = models.ImageField(upload_to='user_images') 

在模板中你做:

<form action="/pic_upload/{{request.user.id}}/" method="post" enctype="multipart/form-data"> 
    {% csrf_token %} 
    <table> 
     <tr> 
     <td>Select Pictures: </td><td><input name="files" type="file" size="50" accept="image/*" multiple> </td> 
     <td><button type="submit"> Upload </button> </td> 
     </tr> 
    </table> 
</form> 

(请注意我上面使用的表结构只是一个例子。)

然后你需要创建视图来保存图像,所以在你的views.py中加入:

from django.contrib.auth.decorators import login_required 
    from django.shortcuts import redirect 


    @login_required 
    def pic_upload(request,user_id): 
     user = UserProfile.objects.get(user__id=user_id) 
     for afile in request.FILES.getlist('files'): 
      pic = Picture() 
      pic.user= user 
      pic.image = afile 
      pic.save() 

     return redirect("path_to_where_you_want_to_go_after_upload") 

这只是视图图片上传 - 您还需要一个显示您的模板。

(注意,这只适用于用户已登录且请求上下文处理器已激活的情况。如果您不需要登录用户,您可以为用户制作一个选择框并添加逻辑。)

然后你需要把这些东西挂在urls.py上:

url(r'^pic_upload/(?P<user_id>\d+)/$', pic_upload, name='pic_upload'),