簡體   English   中英

Django inlineformset_factory不保存或編輯帶有選擇的模型表單

[英]Django inlineformset_factory not saving or editing modelform with choices

我正在嘗試使用嵌入式表單集來創建公司的開放和關閉時間,即星期一至星期五,每天的開放和關閉時間不同。

公司資料表格是常規模型表格。 我在其下加載的公司營業時間是一個Modelformset,其ID是從公司資料表格傳遞的。

可以很好地創建modelform和modelformset。 在編輯時,模型窗體會加載預選的值,但不會加載模型窗體集。 我不知道是否要在創建時保存任何內容,因為在嘗試編輯實例時會得到一個空的modelformset。

我在這里應該做些什么更改,以確保模型集可以保存選擇的選項或在編輯時加載預先選擇的選項?

def addprofile(request):
current_user = request.user
company = Company() ##To create new instance
#company = Company.objects.get(id= request.session['my_ids']) ## To get old instance
OpeningHourslineFormSet = inlineformset_factory(Company, OpeningHours, form=OpeningHoursForm, extra=7 )##fields=("weekday", "fromHour","fromMinute", "toHour", "toMinute")
if request.session['entry_count'] > 1:
    messages.success( request, 'You can only create two business profiles now' )
    return HttpResponseRedirect( reverse('home') )
else:
    if request.method == 'POST':
        hourformset = OpeningHourslineFormSet(request.POST, request.FILES, instance=company)
        form = CompanyForm(request.POST)
        ###### deal with hourformset here
        if form.is_valid():
            model_instance = form.save(commit=False)
            model_instance.pub_date= timezone.now()
            model_instance.user= current_user.id
            model_instance.save()
        else:
            print("companyform not saved")
            ###################
        if hourformset.is_valid():
            hourformset.save(commit=False)
            for product in hourformset:
                if product.is_valid():
                    product.save(commit=False) 
                    product.company = model_instance.id
                    product.save()

            instances = hourformset.save()
        else:
            print(" modelform not saved")


        return HttpResponseRedirect('/bizprofile/success')

    else:
        hourformset = OpeningHourslineFormSet(instance=company)
        form = CompanyForm()
    context = {'hourformset': hourformset, 'form': form}
    return render_to_response('bizprofile/addprofile.html', context, context_instance=RequestContext(request))

我認為您需要給formset一個queryset以便顯示您保存的實例:

# hours is a queryset that you got from company, pseudo code here
hours = company.hours.all()
hourformset = OpeningHourslineFormSet(request.POST,
                                      request.FILES,
                                      queryset=hours)

django文件

在此鏈接上回答:

Django modelform不保存輸入選擇並且不返回錯誤

將不同的數據類型保存到不同的模型字段類型會產生問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM