Друзья, большая просьба помочь. У меня есть набор вложенных форм, который создается в классе-контроллере CreateView.
CartItemFormset = inlineformset_factory(Cart, CartItem, can_order = True, fields = '__all__')
Теперь мне надо передать начальные данные в этот набор форм, причем для одного из полей значения выбираются из списка. Т.е. для такого поля каждой вложенной формы значение выбирается из списка. Но как это сделать?
Первым делом, мы создаем экземпляр главной формы и сохраняем его.
self.form = CartForm(request.POST)
if self.form.is_valid():
self.new_cart = self.form.save()
items = Item.objects.filter(slug__in=cart_items.keys(), is_visible=True, price__gt=0)
Now we create a copy of the formset and it’s necessary to transfer the initial data to the formset. This is a reference to the record of the main model and the values of the list of items. Thus, in each form of the formset, there must be a reference to the record of the main model and one of the elements of the list of items. But how to do that???
Теперь мы создаем экземпляр набора форм и передаем начальные данные. При этом в одно из полей модели подставляется ссылка на запись главной модели. А в одно из полей значение из списка. И вот в этом загвоздка. Т.е. нужно, чтобы в первую вложенную форму подставлялось первое значение из списка. Во вторую – второе и т.д.. Т.е. примерно вот так:
self.formset = CartItemFormset(request.POST, instance = self.new_cart, initial = [
{‘cart’: self.new_cart, ‘item’: items}])
Но это не работает. Может надо как-то перебирать эти значения в цикле или еще как-то решить данную проблему? Помогите плиз!
Отредактировано cdi9 (Окт. 31, 2017 07:57:00)