我的控制台在尝试将数据推送到我的数据库时显示此问题
invalid literal for int() with base 10:
我的 views.py 类:
def routineInput(request):
if request.method == 'POST':
form = CreateRoutine(request.POST)
query = request.POST["name_of_routine"]
newEntry = Todolist(str(query))
#newEntry.name = ()
if form.is_valid():
newEntry.save()
return HttpResponseRedirect('/todo/saved/')
else:
form = CreateRoutine()
这是我的 models.py 类:
class Todolist(models.Model):
id = models.AutoField(primary_key=True)
name = models.TextField()
created_at = models.DateTimeField(default = datetime.now, blank = True)
updated_at = models.DateTimeField(default = datetime.now, blank = True)
newEntry = Todolist(str(query))
是我的问题。如果我将其更改为newEntry = Todolist(1, str(query))
我的代码有效。但在最后一种情况下,我的代码将整数推送到" id"虽然它应该是我的自动增量主键。
在我的函数中没有整数时,我的浏览器会抛出这条消息:
基数为10的int()的无效文字:...
答案 0 :(得分:0)
您可以自己执行newEntry = ToDoList(name=str(query))
或自定义模型中的create
方法来自定义实例创建。
from django.db import models
class ToDoList(models.Model):
id = models.AutoField(primary_key=True)
name = models.TextField()
created_at = models.DateTimeField(default = datetime.now, blank = True)
updated_at = models.DateTimeField(default = datetime.now, blank = True)
@classmethod
def create(cls, name, created_at=None, updated_at=None):
list = cls(name=name, created_at=created_at, updated_at=updated_at)
# do something with the insatnce
return list
newEntry = ToDoList.create(name=str(query))
如果没有关键字参数name=
,构造函数需要id
的整数(因为它是第一个位置参数),而你传递一个字符串。