How to store only the desired values in Django View
I'm a student learning Django for the first time. I want to save only the values I want in Django's View, but I don't know what to do. Below are Models.py and Views.py, forms.py. I want to save it by entering only one without entering second_value and third_value in value_name. Please help me a lot.
def product_upload(request):
current_category = None
categories = Category.objects.all()
products = Product.objects.all()
photos = Photo.objects.all()
designated_object = Designated.objects.all()
options = Option.objects.all()
slug = Product.slug
if request.method == "POST":
form = ProductForm(request.POST, request.FILES)
if form.is_valid():
product = Product()
product.name = form.cleaned_data['name']
product.benefit = form.cleaned_data['benefit']
product.detail = form.cleaned_data['detail']
product.target_price = form.cleaned_data['target_price']
product.start_date = form.cleaned_data['start_date']
product.due_date = form.cleaned_data['due_date']
product.category_code = form.cleaned_data['category_code']
product.image = request.FILES['photo']
product.username = request.user
product.slug = slug
product.kakao_link = form.cleaned_data['kakao_link']
product.save()
for img in request.FILES.getlist('image'):
photo = Photo()
photo.product_code = product
photo.photo = img
photo.save()
if request.method == "POST":
form = OptionForm(request.POST)
if form.is_valid():
option = Option()
option.name = form.cleaned_data['option_name']
option.product_code = product
option.save()
if request.method == "POST":
form = ValueForm(request.POST)
if form.is_valid():
value = Value()
value.name = form.cleaned_data['value_name']
value.option_code = option
value.product_code = product
value.extra_cost = form.cleaned_data['option_price']
value.save()
if request.method == "POST":
form = ValueForm(request.POST)
if form.is_valid():
value = Value()
value.name = form.cleaned_data['second_value']
value.option_code = option
value.product_code = product
value.extra_cost = form.cleaned_data['second_option_price']
value.save()
if request.method == "POST":
form = ValueForm(request.POST)
if form.is_valid():
value = Value()
value.name = form.cleaned_data['third_value']
value.option_code = option
value.product_code = product
value.extra_cost = form.cleaned_data['third_option_price']
value.save()
if request.method == "POST":
form = DesignatedForm(request.POST)
if form.is_valid():
designated = Designated()
designated.price = form.cleaned_data['price']
designated.product_code = product
designated.rep_price = True
designated.save()
return render(request, 'zeronine/list.html', {'form': form,
'current_category': current_category,
'photos':photos,
'options':options,
'products': products,
'categories': categories,
'slug': slug, })
else:
form = ProductForm()
return render(request, 'product/product_upload.html',{'form': form,
'current_category': current_category,
'photos':photos,
'options':options,
'products': products,
'categories': categories})
class ValueForm(forms.Form):
value_name = forms.CharField(error_messages={'required': "옵션값을 입력하세요."}, max_length=32, label="옵션명")
second_value = forms.CharField(error_messages={'required': "두번째 옵션값을 입력하세요."}, max_length=32, label="second_value")
third_value = forms.CharField(error_messages={'required': "세번째 옵션값을 입력하세요."}, max_length=32, label="third_value")
option_price = forms.IntegerField(error_messages={'required': "옵션명을 입력하세요."}, label="옵션추가비용")
second_option_price = forms.IntegerField(error_messages={'required': "옵션명을 입력하세요."}, label="second_option_price")
third_option_price = forms.IntegerField(error_messages={'required': "옵션명을 입력하세요."}, label="third_option_price")
class Value(models.Model):
value_code = models.AutoField(primary_key=True)
option_code = models.ForeignKey(Option, on_delete=models.CASCADE, db_column='option_code', null=True, blank=True)
product_code = models.ForeignKey(Product, on_delete=models.CASCADE, db_column='product_code', null=True, blank=True)
name = models.CharField(max_length=32, null=True, blank=True)
extra_cost = models.IntegerField(null=True, blank=True)