模型定义如下:

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_idauto_increment,所以我不必设置它。
但是如果我使用"u = UnitTab.objects.create()",我返回的对象将"u"设为无-尽管保存成功。那么我怎样才能得到刚刚保存/创建的unit_idprimary 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)

10-06 05:23