Как я могу отобразить Django Formset с некоторыми данными для процесса обновления?
Я использую Dajngo formset с inlineformset_factory. Мне нужно, чтобы когда пользователь нажимает на кнопку обновления, она должна отображать набор форм со значением. Вот код, который я сделал, но ничего не работает: Вот как я создаю набор форм
OrderItemFormset = inlineformset_factory(
Order, OrderItem, fields='__all__', extra=1, can_delete=False)
А вот как я пытался отобразить набор форм с помощью queryset=my_query_set
.
if 'id' in kwargs.keys():
order = Order.objects.get(id=kwargs.get('id'))
order_items = OrderItem.objects.filter(order_id=kwargs.get('id'))
else:
order = None
order_items = None
order_form = OrderForm(instance=order)
print(order_items)
order_item_form = OrderItemFormset(queryset=order_items)
Когда я нажимаю на ссылку обновления, Django выводит родительскую форму с нужными мне данными, но это не работает с formset, он просто дает мне одну строку с пустыми данными.
После некоторых попыток решить мою проблему я обнаружил, что я использую queryset
, и я думаю, что я должен использовать instance
вместо этого.
И еще одна вещь - экземпляр был из модели OrderItem
, а вместо этого он должен быть из модели Order
, поэтому код должен выглядеть следующим образом.
def get(self, request, *args, **kwargs):
if 'id' in kwargs.keys():
order = Order.objects.get(id=kwargs.get('id'))
else:
order = None
order_form = OrderForm(instance=order)
order_item_form = OrderItemFormset(instance=order)
orders = Order.objects.all()
context = {'order_form': order_form,
'order_item_form': order_item_form, 'orders': orders}
return render(request, self.template_name, context)