기본 장고 어드민은 1번에 사진 1장만 업로드가 가능하다.
쇼핑몰을 하다보니 한 상품 당 사진을 10장 이상씩 업로드 해야 하는데,
사진 10장을 업로드하려면 클릭을 10번 해야하니 불편함이 너무 컸다.
검색 끝에 한 번에 대량으로 업로드 가능한 방법을 찾았다.
해야할 일을 총 2가지다.
먼저 예시 모델을 간단히 설명한다.
product모델과 productimage모델이 있고,
productimage모델이 product를 참조하는 관계다.
class Product(models.model):
name = models.CharField(...)
...
class ProductImage(models.model):
image = models.ImageField(...)
product = models.ForeignKey("Product" ...)
먼저 change_form.html파일을 만들어야 하는데, 경로는 아래와 같다.
1)manage.py와 동일한 위치에서 templates/admin 디렉토리를 만든다.
2) 1)에서 다시 app이름/model이름으로 디렉토리를 만든다.
3) 그 안에 change_form.html 파일을 만든다.
내 경우 최종 경로는 templates/admin/core/product이다. (core라는 앱 안에 product모델)
4) change_form.html을 작성해준다.
class InlineProductImage(admin.TabularInline):
model = ProductImage
class ProductAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
super().save_model(request, obj, form, change)
for img in request.FILES.getlist('photos'):
obj.productimage_set.create(image_url=img)
admin.site.register(Product, ProductAdmin)
상품 사진 여러개 올리는 기능이 추가된 것을 확인할 수 있다.
참고한 블로그
https://blog.rousek.name/2017/08/11/uploading-multiple-files-in-django-admin/