HI,
对我来说,这是一个意想不到的结果。我在以下视图中执行以下操作....
(standard view stuff here...)
if post:
postform=PostForm(request.POST,instance=post, prefix="post")
tagform=TagForm(request.POST, instance=post,prefix='tags')
ohouse_form=Host_OHouseForm(request.POST,instance=post,prefix="ohouse")
else:
postform=PostForm(request.POST,prefix="post")
tagform=TagForm(request.POST, prefix='tags')
ohouse_form=Host_OHouseForm(request.POST,prefix="ohouse")
(....I first validate that postform and tagform are valid...)
if ohouse_form.is_valid():
ohouse=ohouse_form.save(commit=False)
ohouse.post=post
ohouse.host=user
ohouse.save()
有问题的表格是一种模型形式。令我困惑的是,视图正常工作,表单验证并且保存成功。该模型应该保存在那一点......如果表单/模型有任何问题,它将不会验证或引发错误。
然而实例并没有出现在我的管理员后端。它也不存在于ohouse查询集中。
这令我感到困惑
答案 0 :(得分:1)
我注意到你正在使用前缀。看看我在其他答案中注意到的奇怪行为。
Python - Django - Form choicefield and cleaned_data
编辑:
你的意思是设置你的所有实例=帖子,甚至是你的OHouse表格吗?
答案 1 :(得分:1)
根据您的最新更新:
这是非常有希望的进展。这意味着正在发生数据库写入,因为返回该ID是数据库查询。
你也应该print type(ohouse)
。我有一种感觉,你没有保存OHouse对象。
我发现你正在instance=post
传递给你ModelForms
的每一个,这是不对的。这会使Host_OHouseForm({}, instance=post)
返回一个新的Post
对象。
我得到了我的赌注,这就是问题。
if post:
postform=PostForm(request.POST,instance=post, prefix="post")
tagform=TagForm(request.POST, instance=post,prefix='tags')
ohouse_form=Host_OHouseForm(request.POST,instance=post,prefix="ohouse")