나는 CS가 1 년이므로 완전히 불명확 한 경우 내 호언을 용서할 수 있습니다.formset을 사용하여 여러 객체 업데이트
"제품"모델의 개체가 여러 개 있습니다. 이제는 모든 객체에서 동일한 필드를 업데이트하고 '수량'필드는 다른 값으로 업데이트하려고합니다. 그러나 각 제품을 updateview와 같이 클릭하는 대신 모든 제품을 나열하고 각 제품의 값을 설정하고 동시에 변경하는 것이 좋습니다. 지금까지 내가 볼 수있는 "FormSet"트릭을해야합니까?
내 카테고리의 모델은
이class Category(models.Model):
category = models.CharField(max_length=30)
def __str__(self):
return self.category
내 제품 모델은 다음과 같습니다 (제품에 대한 할당) 다음과 같습니다
class Product(models.Model):
title = models.CharField(max_length=200)
description = models.CharField(max_length=200)
category = models.ForeignKey(Category)
price = models.DecimalField(max_digits=5, decimal_places=2)
stock = models.PositiveIntegerField()
def __str__(self):
return self.title
단일 제품을 업데이트 내 업데이트보기는 다음과 같습니다
class UpdateProductView(UpdateView):
model = Product
form_class = ProductForm
template_name = "product_form.html"
success_url = '/products'
class CreateCategoryView(FormView):
template_name = "category_form.html"
form_class = CategoryForm
나는 formset에 대한 설명서를 읽었지만,별로 느끼지 않았다는 것을 인정해야합니다. 나중에 실제로 사용하는 방법에 대해 더 똑똑하게. 누구든지 손을 댈 수 있습니까?
아, 그렇습니다. 제가 의미하는 바는 '재고품'과 수량이 아닙니다. 이 기능을 별도의 기능으로 정의합니까, 아니면이 기능을 새로 볼 수 있습니까? D – PaFko
Django의 폼처럼 작동합니다. 데이터를 바인딩하고, .is_valid() 메소드 등으로 formset 내부의 각 폼의 유효성을 검사 할 수 있지만 먼저 선언하지 않고 클래스를 생성해야합니다. 그것이 어떻게 작동 하는지를 정말로 알고 싶다면, 간단한 견해로 그것을 직접 구현하십시오. 여기 워드 프로세서의 예제 https://docs.djangoproject.com/en/1.9/topics/forms/formsets/#using-a-formset-in-views-and-templates 그런 다음'django의 일반 뷰를 사용해 볼 수 있습니다 -extra-views' 앱 –