模型定义如下:
class UnitTab(models.Model):
unit_id = models.PositiveIntegerField(primary_key=True)
create_time = models.PositiveIntegerField()
update_time = models.PositiveIntegerField()
read_db_connection = 'game_center_admin_db'
write_db_connection = 'game_center_admin_db'
class Meta:
db_table = u'unit_tab'
def save(self, *args, **kwargs):
curr_time = int(time.time())
if not self.create_time:
self.create_time = curr_time
self.update_time = curr_time
super(UnitTab, self).save(*args, **kwargs)
def __unicode__(self):
return u'unit_tab_%s' % (self.unit_id)
我只是用
UnitTab
保存aUnitTab.objects.create()
来创建一个新对象。unit_id
有auto_increment
,所以我不必设置它。但是如果我使用
"u = UnitTab.objects.create()"
,我返回的对象将"u"
设为无-尽管保存成功。那么我怎样才能得到刚刚保存/创建的unit_id
的primary key(unit_id)
?编辑:我在我的项目中使用Django 1.6.11
编辑:我记录了这些属性,发现在
UnitTab
之后,u.save()
没有。unit_id
正常,实体保存成功。编辑:从PositiveIntegerField更改为auto field之后,在save()之后自动分配
create_time
字段。只是不知道为什么会这样。 最佳答案
您不想改用models.AutoField
有什么特别的原因吗?
unit_id = models.AutoField(primary_key=True)