2016-07-18 9 views
0

Я нахожусь 1 год на CS, так что простите мою бодрость, если я совершенно неясен.Обновите несколько объектов с помощью набора форм

У меня есть несколько объектов из моей модели «Продукты». Теперь я хотел бы обновить одно и то же поле на всех объектах, поле «количество» с разными значениями. Но вместо того, чтобы входить и выходить из каждого продукта, как с 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 

Я прочитал документацию по набору форм, но я должен признать, что я не чувствовал себя умнее о том, как на самом деле использовать его впоследствии .. может кто-нибудь дать руку?

ответ

0

Не нашли quantity поле на вашей модели Product, но, как я вижу, вы хотите использовать 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

Кроме того, не забудьте проверить все modelformset_factory аргументы.

+0

Ах, да, конечно, я имел в виду «запас», а не количество. Я могу определить это как отдельную функцию или сделать для этого новый вид? Я считаю это немного запутанным: D – PaFko

+0

Он работает как формы в Django, вы можете привязывать данные, проверять каждую форму внутри набора форм с помощью метода .is_valid() и т. Д., Но сначала вы должны создать класс с фабрикой, а не объявлять его. Если вы действительно хотите понять, как это работает, попробуйте реализовать его самостоятельно с простым представлением. Пример в документах здесь https://docs.djangoproject.com/en/1.9/topics/forms/formsets/#using-a-formset-in-views-and-templates. Затем вы можете попробовать использовать общие представления из 'django приложение -extra-views' –

 Смежные вопросы

  • Нет связанных вопросов^_^