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()
要求主键字段。 如何在创建期间获取主键字段值?
答案 0 :(得分:2)
从模型中删除id
字段,它由Django自动添加。
.save()
在这里不是必需的,.objects.create
已经这样做了。
最好使用关键字参数,然后你不能按照你的论点顺序犯错误,人们知道什么是:
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
或categoryID
字段中收到错误消息。您应该为它们分配相关字段的实例,或使用字段名称的_id
形式:
userID=request.user,
categoryID_id=categoryId,
因此,应删除这些字段名称的“ID”部分,这很令人困惑。然后它变成:
user=request.user,
category_id=categoryId,