好吧,我正在研究的一个小团队的项目是django和开发webapp的新手,突然间我们失去了将模型对象添加到数据库的所有能力。我们都完全失败了。以下是我们目前正在调试的地方。
views.py
def postOp(request):
if request.method == 'POST':
operation = request.POST.get("operation","noop")
#Registered user operations
if request.user.is_authenticated():
username = request.session.get("member","Guest")
user = ToolUser.objects.get(name=username)
zipcode = user.location
.
.
#AddTool
if operation == "addTool":
toolName = request.POST.get("toolName","N/A")
toolDesc = request.POST.get("toolDesc","N/A")
print("In addtools")
user.submitTool(toolName, toolDesc)
print("SUBITTED")
return HttpResponseRedirect("tools")
模型
def submitTool(self, Nname, Ndescription):
print("IN SUBMIT ")
t = Tool(name=Nname, owner=self.id, shed=self.id, description=Ndescription, currOwner=0, location=self.location)
print("tool made :", t.name, ", ", t.owner, ", ", t.shed, ", ", t.description, \
", ",t.currOwner ,", ", t.location)
t.save()
print("saving tool")
它似乎一直到t.save(),然后中断。使用单独的工具来查看数据库,显然没有保存到表中。但是以下输出到终端,它似乎确实创建了这个实例。
终端输出:
在addtools中
IN SUBMIT
工具制作:tooltest,2,2,描述,0,12345
编辑:忘了更新这个,发现问题,原来一个字段是空的,而django拒绝保存有空字段的东西。答案 0 :(得分:-1)
等等,您有一个名为saveTool()
的模型函数但是您正在调用user.savetool
(我认为它是django.contrib.auth.user
)?如果你说解决了,那就好了。
最好只填充postOp()
函数中的对象并将其保存在那里。如果saveTool()
确实是模型类的一部分,那么您将实例化一个模型对象,然后调用一个方法来实例化另一个函数。
我的观点是,从样式的角度来看,代码是不必要的复杂,或者这需要更多的数据来真正解决那里发生的事情。