0
我有一個內嵌的formset,其中extra = 24是一天中的小時。 我沒有任何問題,添加新的條目並保存編輯具有多個實例的inlineformset_factory
OreSommInlineFormSet = inlineformset_factory(FarmacoGiornaliero, OreSomministrazione,
form=OreForm, fields=('ore','farmaco', 'quantita'),
extra=24, can_delete=False)
myospite = Ospite.objects.filter(cognome=cognome).filter(nome=nome)[0]
if request.method == 'POST':
form = GiornalieroForm(request.POST)
formset = OreSommInlineFormSet(request.POST, prefix='formset')
if form.is_valid() and formset.is_valid():
giornaliero=form.save(commit=True)
for form in formset.forms:
ora = form.save(commit=False)
ora.farmaco = giornaliero
ora.ospite = myospite
ora.save()
我試圖找出如何我可以編輯和保存的表單集的數據。我有一個查詢集,返回應該填充formset的OreFarmaco的24個實例,但formset本身只有一個instance關鍵字。
OreSommInlineFormSet = inlineformset_factory(FarmacoGiornaliero,OreSomministrazione, 形式= OreForm,字段=( '礦', 'quantita'), 額外= 24,can_delete = FALSE)
myospite = Ospite.objects.filter(cognome=cognome).filter(nome=nome)[0]
locfarmaco = Farmaco.objects.filter(farmaco=farmaco)[0]
giornaliero = FarmacoGiornaliero.objects.select_related() \
.filter(ospite=myospite) \
.filter(farmaco=locfarmaco)[0]
orefarmaco = OreSomministrazione.objects.select_related().filter(farmaco=giornaliero).filter(ospite=myospite)
if request.method == "POST":
form = GiornalieroForm(request.POST, instance=giornaliero)
formset = OreSommInlineFormSet(request.POST, prefix='formset', instance=orefarmaco[0])
if form.is_valid() and formset.is_valid():
giornaliero=form.save(commit=True)
formset.save()
謝謝。
當你說get(),你的意思是使用主鍵或id來檢索數據?我的表單作爲formset的24個附加項的列表,用戶可以更改所有這些值。我怎麼能按照你所建議的方式一一處理呢? – vince 2013-02-28 16:13:01
是的,但你也可以使用get in all fields。 get()函數將返回一個數據。嘗試改變過濾器來獲取。例如,像這樣:myospite = Ospite.objects.get(cognome = cognome,nome = nome) – catherine 2013-02-28 16:23:47
好的,我會這麼做的。那麼formset呢?我是否必須更改我的HTML以適合您建議的鱈魚? – vince 2013-02-28 16:28:04