模型定义如下:
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
保存UnitTab.objects.create()
以创建新对象。 unit_id
有auto_increment
,所以我没有设置它。
但是如果我使用"u = UnitTab.objects.create()"
,我回来的对象"u"
是unit_id
为无 - 尽管保存成功。那么如何才能获得我刚刚保存/创建的primary key(unit_id)
的{{1}}?
编辑:我正在使用Django 1.6.11作为我的项目
编辑:我记录了这些属性,发现在UnitTab
之后,u.save()
为无。 unit_id
没问题,实体已成功保存。
编辑:从PositiveIntegerField更改为AutoField后,{(1}}字段在save()后自动分配。只是不确定为什么会这样。
答案 0 :(得分:3)
创建新对象后:
u = UnitTab.objects.create()
通过使用refresh_from_db()
方法从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
答案 1 :(得分:2)
您是否有特殊原因不想使用models.AutoField
?
spin_numberPages
.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
// TODO Auto-generated method stub
String id = values.get(position).getId();
// here you get ID and now you may do what you want to do with ID.
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});