我有一个带有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)
)我可以保存现有的标签,但我不能动态添加新的标签...
发布于 2015-04-28 03:56:52
我猜您正在使用某种类型的JS来动态添加tags。我建议你更进一步,创建一个API端点,在那里你可以实际保存创建的标签,这样它们就可以成为选择框的有效选项。
https://stackoverflow.com/questions/29622341
复制相似问题