我不确定标题是否正确描述了问题。如果您的标题更具描述性,请编辑标题。
我有以下动态添加的输入字段:
前两行是第一个对象,第二行是第二个对象,依此类推。...我试图通过自定义post()
方法将这些动态添加的元素保存到DB。
使用我当前的覆盖post()
方法的版本:
if 'bha' in request.POST:
bha_form = BHA_Form(request.POST, instance= #some_kwargs...)
print(request.POST)
它打印以下queryset
:
<QueryDict: {'csrfmiddlewaretoken': [# foo_token], 'item_description': ['aaaaaaaaa', 'bbbbbbbbb'], 'num_of_jts': ['aaaaaaaaaaa', 'bbbbbbbbb'], 'length': ['aaaaaaaaaaaa', 'bbbbbbbbbb'], 'cum_length': ['aaaaaaaaaaaaa', 'bbbbbbbbbbbbbb'], 'outer_d': ['aaaaaaaaaaaaa', 'bbbbbbbbbbbbbbb'], 'inner_d': ['', ''], 'drift_d': ['', ''], 'od_cplg': ['', ''], 'top_thread': ['', ''], 'air_wght': ['', ''], 'make': ['', ''], 'sn': ['', ''], 'bha_component': ['Submit']}>
如您所见,每个输入字段以列表形式包含2个值,因为前端有两个对象。如果我仅使用bha_form.save()
,它将仅将最后一个值保存在查询集列表中。这不是我想要的。我想使用类似get_or_create()
方法的方法为每个动态添加的元素创建新对象,或者编辑对象(如果它们已经存在于数据库中)
我应该怎么做?我想我可以写一些长的代码来做到这一点,但只是想知道是否有任何优雅的方法可以实现这一目标。