Найти - Пользователи
Полная версия: Как передать исходные данные как список в набор форм
Начало » Django » Как передать исходные данные как список в набор форм
1
cdi9
Друзья, большая просьба помочь. У меня есть набор вложенных форм, который создается в классе-контроллере 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}])

Но это не работает. Может надо как-то перебирать эти значения в цикле или еще как-то решить данную проблему? Помогите плиз!
inoks
Не совсем понятно, какую проблему пытаешься решить.
Опиши, что нужно сделать на уровне бизнес логики.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB