如何在Django中保存模型记录

时间:2016-12-31 20:47:15

标签: django

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()

要求主键字段。 如何在创建期间获取主键字段值?

1 个答案:

答案 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字段提供值,因为这是自动设置的。

但是等一下:您可能会从userIDcategoryID字段中收到错误消息。您应该为它们分配相关字段的实例,或使用字段名称的_id形式:

userID=request.user,
categoryID_id=categoryId,

因此,应删除这些字段名称的“ID”部分,这很令人困惑。然后它变成:

user=request.user,
category_id=categoryId,