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

Вы можете создать другую модель изображения и придать ему ForeignKey отношения в вашем пользователе model.Something, как это :

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

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

Читайте о полях django many-to-many и взаимно-однозначных полях. Django Model relationship document.

1

Предположим, вы хотите иметь пару изображений, связанных с одним профилем пользователя, и позволить пользователю одновременно загружать несколько изображений на ваш взгляд. В вашем 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'), 
Смежные вопросы