django admin 사진 한 번에 여러 장 업로드 하기

yo·2020년 12월 28일
0

기본 장고 어드민은 1번에 사진 1장만 업로드가 가능하다.
쇼핑몰을 하다보니 한 상품 당 사진을 10장 이상씩 업로드 해야 하는데,
사진 10장을 업로드하려면 클릭을 10번 해야하니 불편함이 너무 컸다.
검색 끝에 한 번에 대량으로 업로드 가능한 방법을 찾았다.
해야할 일을 총 2가지다.

  1. change_form.html파일 오버라이드
  2. admin.py 오버라이드

먼저 예시 모델을 간단히 설명한다.
product모델과 productimage모델이 있고,
productimage모델이 product를 참조하는 관계다.

class Product(models.model):
	name = models.CharField(...)  
   	 ...
 
class ProductImage(models.model):
	image = models.ImageField(...)
   	product = models.ForeignKey("Product" ...)

1. change_form.html파일을 override한다.

먼저 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을 작성해준다.

2. admin.py를 오버라이드한다.

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/

profile
Never stop asking why

0개의 댓글