【发布时间】:2016-01-05 19:07:23
【问题描述】:
模型定义如下:
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.objects.create() 保存UnitTab 来创建一个新对象。 unit_id 有 auto_increment,所以我不必设置它。
但是如果我使用"u = UnitTab.objects.create()",我返回的对象"u" 是unit_id 为无——尽管保存成功。那么我如何才能获得我刚刚保存/创建的UnitTab 的primary key(unit_id)?
编辑:我的项目使用 Django 1.6.11
编辑:我记录了这些属性,发现在u.save() 之后,unit_id 为无。 create_timeOK,实体保存成功。
编辑:从 PositiveIntegerField 更改为 AutoField 后,unit_id 字段在 save() 之后自动分配。只是不知道为什么会这样。
【问题讨论】:
标签: python django django-models primary-key