2016-07-18 10 views
0

私は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のドキュメントを読んだが、私はあまり気にしなかったことを認めなければならない後でそれを実際に使用する方法についてよりスマートに...誰も手を差し伸べることができますか?

答えて

0

Productモデルにquantityフィールドが見つかりませんでしたが、わかるように、ModelFormSetを使用します。リンクによって

# Generate your formset class with `modelformset_factory` 
ProductFormSetClass = modelformset_factory(Product, fields=('quantity',)) 
# Now you can create your formset, bind data, etc 
formset = ProductFormSetClass(request.POST) 
formset.save() 

詳細: https://docs.djangoproject.com/en/1.9/topics/forms/modelforms/#model-formsets

また、すべての​​引数を検査することを忘れないでください。

+0

ああ、もちろん、私が意味するものは「在庫」であり量ではありませんでした。 これを独立した関数として定義していますか、これについて新しいビューを作成していますか? D – PaFko

+0

Djangoのフォームのように動作し、データをバインドし、.is_valid()メソッドなどでformset内の各フォームを検証できますが、まず宣言するのではなく、クラスを作成する必要があります。あなたが本当にそれがどのように動作するかを理解したい場合は、簡単なビューで自分でそれを実装しようとします。ここにあるドキュメントの例https://docs.djangoproject.com/en/1.9/topics/forms/formsets/#using-a-formset-in-views-and-templates次に、 'djangoからの一般的なビューを使うことができます-extra-views'アプリ –

関連する問題