我有一个带有ManyToManyField的模型,在我看来,我希望能够为生成的选择框添加新选项
如何使用get_or_create函数处理这些新项?
我想在保存之前检查表单的有效性,但它永远不会有效,因为我必须创建所有新的ManyToMany项目。
与此同时,如果表单无效,我也不想添加新商品...
所以我一直坚持这个不工作的代码:
def add_entry(request):
if request.method == 'POST':
form = EntryForm(data=request.POST)
model_instance = form.save(commit=False)
for tag in model_instance.tags.all():
t, created = Tag.objects.get_or_create(author=request.user, title=tag.title)
model_instance.tags.add(t)
if form.is_valid():
model_instance.save()
return HttpResponseRedirect("/")
else:
form = EntryForm()
return render_to_response(
'add_entry.html',
{'form' : form },
context_instance=RequestContext(request))
编辑:
我的代码现在是
def add_entry(request):
if request.method == 'POST':
form = EntryForm(data=request.POST)
if form.is_valid():
model_instance = form.save(commit=False)
model_instance.save()
form.save_m2m()
return HttpResponseRedirect("/")
else:
print form.errors
else:
form = EntryForm()
return render_to_response(
'add_entry.html',
{'form' : form },
context_instance=RequestContext(request)
)
我可以保存现有标签,但我不能添加新标签......
答案 0 :(得分:0)
我猜您正在使用某种JS
动态添加tags
。我建议你进一步创建一个API端点,在那里你可以实际保存创建的标签,这样它们就可以成为选择框的有效选项。