gpt4 book ai didi

python - 在 django 中保存对象列表

转载 作者:太空狗 更新时间:2023-10-30 02:21:27 25 4
gpt4 key购买 nike

我正在使用 django 1.5,我正在尝试做这样的事情:

    quotes = formset.save()
user = client_form.save()
for quote in quotes:
quote.client = user
quotes.save()

但是列表没有 save() 方法,所以是否有一些内置功能可以做类似的事情?

我在 SO Question about batch save objects in Django 上找到了这个答案

django 1.5 是否仍然如此?有没有办法避免对列表的每个对象调用 save() ?

这是我的实际查看代码:

def new_quote(request):
QuoteLineFormSet = modelformset_factory(QuoteLine, form=QuoteLineForm, extra=2)

if request.method == 'POST':
formset = QuoteLineFormSet(request.POST, request.FILES, queryset=QuoteLine.objects.none())
quote_form = QuoteForm(request.POST, request.FILES)
if formset.is_valid() and quote_form.is_valid():
quote_lines = formset.save(commit=False)
#quote_lines = formset.get_queryset()
quote = quote_form.save()
for quote_line in quote_lines:
quote_line.quote = quote
quote_line.save()
request.session['quote_id'] = quote.id
return HttpResponseRedirect(reverse('new_client'))
else:
formset = QuoteLineFormSet(queryset=QuoteLine.objects.none())
quote_form = QuoteForm()

return render(request, 'request_quote_form.html', {
'formset': formset,
'quote_form': quote_form,
})

我现在的解决方案

    quote_line_ids = [item.pk for item in formset.save()]
quote_lines_qs = QuoteLine.objects.filter(pk__in=quote_line_ids)
quote = quote_form.save()
quote_lines_qs.update(quote=quote)

最佳答案

您可以使用 update()查询集上的方法。

另请参阅此问答:Django: form that updates X amount of models

关于python - 在 django 中保存对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com