Django模型未保存到数据库
好的,我正在和一个小团队一起做一个新项目,我们在用django开发一个网页应用。突然之间,我们发现无法再往数据库里添加模型对象了。大家都很困惑。下面是我们目前在调试的情况。
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
在提交中
创建的工具:tooltest , 2 , 2 , 描述 , 0 , 12345
补充:我忘了更新这个,找到了问题,原来是有一个字段是空的,django 不允许保存有空字段的数据。
1 个回答
-1
等一下,你有一个叫做 saveTool()
的模型函数,但你却在调用 user.savetool
(我猜这是指 django.contrib.auth.user
)?如果你说这样可以解决问题,那就没问题。
其实更好的做法是直接在 postOp()
函数里填充对象,然后在那儿保存。如果 saveTool()
确实是模型类的一部分,你应该先创建一个模型对象,然后再调用一个方法来执行另一个功能。
我的意思是,从代码风格来看,这段代码显得有些复杂,或者说需要更多的信息才能搞清楚到底发生了什么。