gpt4 book ai didi

python - Django 模型 : get primary key of the model just created

转载 作者:行者123 更新时间:2023-11-28 21:48:49 27 4
gpt4 key购买 nike

模型定义如下:

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 为 None ——虽然保存成功。那么我怎样才能得到我刚刚保存/创建的 UnitTabprimary key(unit_id) 呢?

编辑:我正在为我的项目使用 Django 1.6.11

编辑:我记录了这些属性,发现在 u.save() 之后,unit_id 为 None。 create_time 成功,实体保存成功。

编辑:从 PositiveIntegerField 更改为 AutoField 后,unit_id 字段在 save() 后自动分配。只是不确定为什么会这样。

最佳答案

创建新对象后:

u = UnitTab.objects.create()

通过使用 refresh_from_db() 方法从数据库中刷新它的值来跟进它。

u.refresh_from_db()

您可以在此处找到此信息:

https://docs.djangoproject.com/en/1.9/ref/models/instances/#refreshing-objects-from-database

编辑:

如果您使用的是 django 1.6,请使用 save() 方法,您应该能够像这样访问它:

>>> b2 = Blog(name='Cheddar Talk', tagline='Thoughts on cheese.')
>>> b2.id # Returns None, because b doesn't have an ID yet.
>>> b2.save()
>>> b2.id # Returns the ID of your new object.

https://docs.djangoproject.com/en/1.6/ref/models/instances/#auto-incrementing-primary-keys

关于python - Django 模型 : get primary key of the model just created,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34585617/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com