Я хочу, чтобы пользователи могли загружать несколько картинок, но я могу заставить их сделать только одну. вот мой код:
urls.py
from . import views
from django.urls import path
app_name = 'accounts'
urlpatterns = [
path('login/', views.login, name='login'),
path('logout/', views.logout, name='logout'),
path('profile/<int:user_id>', views.profile, name='profile'),
path('profile/<int:user_id>/upload/', views.upload_pics, name='upload_pics'),
]
вот мой взгляд:
def upload_pics(request, user_id):
user_profile = get_object_or_404(User, pk=user_id)
if request.method == "POST":
file_list = request.FILES.getlist('files')
for afile in file_list:
pic = File()
pic.user = user_profile
pic.image = afile
pic.save()
return redirect("groups:index")
else:
render(request, 'accounts/pic_upload.html')
return render(request, 'accounts/pic_upload.html')
наконец, вот форма (pic_upload.html):
<form action="{% url 'accounts:upload_pics' 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>
и вот моя модель:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class File(models.Model):
image = models.FileField(upload_to='images/')
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='files')
Я пытался сделать это в течение нескольких дней, но не повезло. Я рассмотрел наборы форм, но, кажется, существуют более простые методы для выполнения нескольких загрузок файлов. любые рекомендации относительно того, почему сохраняется только 1 изображение, были бы действительно полезны. спасибо, 1015 *