私はCSで1年目です。私が完全に不明な場合は、私のノービスを許してください。formsetでいくつかのオブジェクトを更新する
「製品」モデルのオブジェクトがいくつかあります。今私は、すべてのオブジェクトの同じフィールドを更新したいと思います。 'quantity'フィールドは異なる値で更新します。しかし、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'アプリ –