게으른 과거의 나를 미워하며 과거의 한 일을 다시 복기해서 쓰는 내용(2)
1. productapp을 만들고 models.py를 작성함
개인적으로 쇼핑몰을 만들어보는건 처음이라 Model을 정의하는 작업이 너무 어려웠다..
우선, 오픈마캣이 아닌 개인 쇼핑몰을 구상중이기에 판매자는 admin이다.
2. ProductCategory의 Create를 구현함
3. Product의 Create를 구현함
productapp/views.py
@method_decorator(CHECK_AUTHENTICATION, 'dispatch')
class ProductCreateView(MultiFormView):
form_classes = {'ProductCreationForm': ProductCreationForm,
'ProductThumbnailCreationForm': ProductThumbnailCreationForm,
'ProductDetailImageCreationForm': ProductDetailImageCreationForm}
template_name = 'productapp/create/product_create.html'
success_url = reverse_lazy('storeapp:index')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['category_list'] = json.dumps(list(ProductCategory.objects.select_related().all().values()),
ensure_ascii=False)
return context
def forms_valid(self, forms):
product = forms['ProductCreationForm'].save(commit=False)
thumb_list = self.request.FILES.getlist('p_thumbnail', None)
detail_list = self.request.FILES.getlist('p_detail_image', None)
category_form = ProductCategoryCreationForm({'category_parent': self.request.POST.get('category_parent'),
'category_name': self.request.POST.get('category_name')})
if category_form.is_valid(): # category form 유효성 체크
category = category_form.save()
product.product_category = category
product.save()
if thumb_list: # 썸네일 저장
for thumb_image in thumb_list:
new_thumb = ProductThumbnailImage()
new_thumb.p_target_product_id = product
new_thumb.p_thumbnail = thumb_image
new_thumb.save()
if detail_list: # 제품 상세 이미지 저장
for detail_image in detail_list:
new_detail_image = ProductDetailImage()
new_detail_image.p_target_product_id = product
new_detail_image.p_detail_image = detail_image
new_detail_image.save()
return super(ProductCreateView, self).forms_valid(forms)
1. django-multi-form-view를 알게 되었고 적용했다!
1. 카테고리 계층구조의 최대 참조 가능 수를 설정할 방법을 찾지 못함