2
我有一個觀點如下代碼:表單集創建新條目,而不是更新的
def controller_details(request, object_id):
controller = Controller.objects.get(pk=object_id)
controllerURI = controller.protocol + '://' + controller.server + '/' + controller.name
FilterFormSet = inlineformset_factory(Controller, Filter, extra=2)
if request.method == 'POST':
formset = FilterFormSet(request.POST, request.FILES, instance=controller)
if formset.is_valid():
formset.save()
else:
HttpResponseRedirect('controller-details')
else:
formset = FilterFormSet(instance=controller)
return render_to_response('controller_details.html', {'formset':formset, 'controllerURI':controllerURI}, context_instance=RequestContext(request))
在我的模型中的單個控制器由多個過濾器(一對多),每個過濾器可以有另一個過濾器作爲其產出的目標(自我一對多)。當我嘗試更新特定過濾器的目標時,而不是更新目標值,我會得到一個新的條目。這裏是模型的部分看起來像:
class Filter(Component):
controller = models.ForeignKey(Controller)
targetURI = models.ForeignKey('self', verbose_name='Target URI', null=True, blank=True)
filterType = models.CharField('Type', max_length=64, choices=FILTER_TYPES,)
firstFilter = models.BooleanField('First Filter')
在此先感謝。
我不知道這是不是一個「好」的方式做到這一點,但對於那些誰不想這兩套代碼進行比較,而不是隻是做formset.save(),Przemek得到的實例保存(提交= False),然後保存每個實例。我現在正在爲自己嘗試這個。感謝您發佈您的解決方案Przemek。 – KobeJohn 2011-10-26 07:13:02