如何在Django中保存模型记录
它要求一个主键字段。如何在Django中保存模型记录,django,Django,它要求一个主键字段。 如何在创建期间获取主键字段值?从模型中删除id字段,Django会自动添加该字段 .save()在这里是不必要的,.objects.create已经这样做了 最好使用关键字参数,这样你就不会在参数的顺序上犯错误,人们知道什么是: class Item(models.Model): id = models.AutoField(primary_key=True) userId = models.ForeignKey(User,
如何在创建期间获取主键字段值?从模型中删除
id
字段,Django会自动添加该字段
.save()
在这里是不必要的,.objects.create
已经这样做了
最好使用关键字参数,这样你就不会在参数的顺序上犯错误,人们知道什么是:
class Item(models.Model):
id = models.AutoField(primary_key=True)
userId = models.ForeignKey(User, on_delete=models.CASCADE)
categoryId = models.ForeignKey(Category, on_delete=models.CASCADE)
itemName = models.CharField(max_length=100)
startDate = models.DateTimeField('startDate')
endDate = models.DateTimeField('endDate')
priority = models.IntegerField(default=0)
progress = models.IntegerField(default=0)
own = models.IntegerField(default=0)
advanced = models.IntegerField(default=0)
item = Item.objects.create(request.user.id,categoryId,txtItemName,txtStartDate,txtEndDate,priorityName,progressStatus,ownStatus,advanced)
item.save()
您不必为id
字段提供值,因为它是自动设置的
但是等等:您可能从userID
或categoryID
字段中得到错误。您应该为他们分配一个相关字段的实例,或者使用字段名的\u id
形式:
item = Item.objects.create(
userId=request.user.id,
categoryId=categoryId,
itemName=txtItemName,
startDate=txtStartDate,
endDate=txtEndDate,
priority=priorityName,
progress=progressStatus,
own=ownStatus,
advanced=advanced)
因此,这些字段名的“ID”部分应该被删除,这是令人困惑的。然后它变成:
userID=request.user,
categoryID_id=categoryId,
从模型中删除
id
字段,Django会自动添加该字段
.save()
在这里是不必要的,.objects.create
已经这样做了
最好使用关键字参数,这样你就不会在参数的顺序上犯错误,人们知道什么是:
class Item(models.Model):
id = models.AutoField(primary_key=True)
userId = models.ForeignKey(User, on_delete=models.CASCADE)
categoryId = models.ForeignKey(Category, on_delete=models.CASCADE)
itemName = models.CharField(max_length=100)
startDate = models.DateTimeField('startDate')
endDate = models.DateTimeField('endDate')
priority = models.IntegerField(default=0)
progress = models.IntegerField(default=0)
own = models.IntegerField(default=0)
advanced = models.IntegerField(default=0)
item = Item.objects.create(request.user.id,categoryId,txtItemName,txtStartDate,txtEndDate,priorityName,progressStatus,ownStatus,advanced)
item.save()
您不必为id
字段提供值,因为它是自动设置的
但是等等:您可能从userID
或categoryID
字段中得到错误。您应该为他们分配一个相关字段的实例,或者使用字段名的\u id
形式:
item = Item.objects.create(
userId=request.user.id,
categoryId=categoryId,
itemName=txtItemName,
startDate=txtStartDate,
endDate=txtEndDate,
priority=priorityName,
progress=progressStatus,
own=ownStatus,
advanced=advanced)
因此,这些字段名的“ID”部分应该被删除,这是令人困惑的。然后它变成:
userID=request.user,
categoryID_id=categoryId,
无法分配“”:“Item.userId”必须是“User”实例。如果您尚未访问该用户的任何属性,并且Django已推迟决定是否存在当前用户,则会得到该实例。您可能应该检查该用户是否已登录(使用request.User.is\u authenticated())因为如果没有用户id,你怎么为用户存储记录呢!!!显然,我做了另一个用户模型,这是造成问题的原因!!!ThanksCannot assign“”:“Item.userId”必须是一个“User”实例。如果您尚未访问该用户的任何属性,并且Django已推迟决定是否确实存在当前用户,则会得到该实例。您可能应该检查该用户是否已登录(使用request.User.is_authenticated())因为如果没有用户id,你怎么为用户存储记录呢!!!显然,我做了另一个用户模型,这是造成问题的原因!!!谢谢