我遇到了一些奇怪的行为而且不太清楚为什么,我现在能够在另一个视图中没有问题地这样做。
以下是问题: 我正在创建并将新记录保存到数据库中,但是在保存之后它不会给我一个新记录的ID,只是NULL,即使记录正在插入数据库而没有错误。
我的代码:
r = KsProjectRewards()
r.project_id = project_id
r.reward_description_short = desc_short
r.reward_description_long = desc_long
r.limit_max = limit
r.international_info = international
r.is_active = active
r.save()
r.id # <!-- THIS RETURNS NULL
这是我的模特
class KsProjectRewards(models.Model):
id = models.IntegerField(primary_key=True)
project_id = models.IntegerField()
reward_description_short = models.CharField(max_length=75L, blank=True)
reward_description_long = models.CharField(max_length=500L, blank=True)
num_backers = models.IntegerField(null=True, blank=True)
limit_count = models.IntegerField(null=True, blank=True)
limit_max = models.IntegerField(null=True, blank=True)
limit_met = models.IntegerField(null=True, blank=True)
delivery_date = models.DateTimeField(null=True, blank=True)
international_info = models.CharField(max_length=200L, blank=True)
date_added = models.DateTimeField()
date_updated = models.DateTimeField(null=True, blank=True)
is_active = models.IntegerField()
class Meta:
db_table = 'ks_project_rewards'
答案 0 :(得分:3)
您应该通过从模型中删除以下行来让django automatically create the id
primary key:
id = models.IntegerField(primary_key=True)
或者,如果您想明确定义它,如果您希望它自动递增,则需要AutoField
:
id = models.AutoField(primary_key=True)
答案 1 :(得分:1)
您可以尝试从模型中删除以下行:
id = models.IntegerField(primary_key=True)
Django会照顾你的自动增量字段。