【发布时间】:2013-12-06 18:32:17
【问题描述】:
我有一个使用实例的模型表单,但用户第一次访问表单时,该实例还不存在。如果实例不存在,则会有一个空表单。
什么是最好的处理方法?另外,如何删除表单中的实例?
我应该改用 max_number = 1, can_delete= True 的 modelformset_factory 吗?
view.py:
def setLayerLabel(request, map_id, layerMapOptions_id):
layerMapOptions = LayerMapOptions.objects.get(pk=layerMapOptions_id)
layerLabel_selected = LayerLabel.objects.get(layerMapOptions=layerMapOptions)
if request.POST:
formset = layerLabelForm(request.POST, instance = layerLabel_selected)
if formset.is_valid():
instance = formset.save()
else:
formset = layerLabelForm(instance = layerLabel_selected)
return render_to_response("basqui/manage_map_layerLabel.html", {'layer_label': layerLabel_selected, 'layerLabelformset': formset, 'layer': layerMapOptions.layer}, context_instance=RequestContext(request))
forms.py:
class layerLabelForm(BetterModelForm):
def __init__(self, *args, **kwargs):
super(layerLabelForm, self).__init__(*args, **kwargs)
class Meta:
model = LayerLabel
fieldsets = [('Label Options:', {'fields': ['field', 'font','font_size', 'font_color', 'halo_radius', 'halo_color', 'offset_x', 'offset_y'], 'classes': ['module']}),]
【问题讨论】:
-
这里有什么问题?如果没有模型保存到数据库,那么表单当然应该是空的。
标签: django django-forms