【发布时间】:2016-11-11 01:13:06
【问题描述】:
我正在使用自定义创建方法 create_actor 创建模型对象,如下所示:
class ActorsManager(models.QuerySet):
def create_actor(self, email,
actortype,
locationid,
primaryphone, actoruniversalid):
actor = self.model(email=email,
actortype=actortype,
locationid = locationid,
primaryphone=primaryphone, actoruniversalid= actoruniversalid)
actor.save(using='gpr')
return actor
actor_entry = Actors.objects.using('gpr').create_actor(email='', actortype=1, locationid = location_entry,primaryphone='', actoruniversalid= new_bluenumber)
我没有在actor_entry 变量中获取最近创建的对象,
可能是我做错了什么,请帮忙。
我使用 before insert SQL 触发器在数据库中生成 uuid 作为 pk(CharField here),因此该对象在保存之前确实有一个 pk(由数据库生成)。
演员模型
class Actors(models.Model):
actorid = models.CharField(db_column='ActorID', primary_key=True, max_length=255) # Field name made lowercase.
actoruniversalid = models.CharField(db_column='ActorBluenumber', unique=True, blank=True, null=True, max_length=254)
......
......
objects = ActorsManager.as_manager()
class Meta:
managed = False
db_table = 'actors'
【问题讨论】:
-
你得到了什么是?是空对象还是别的什么?
-
它是 Actors 对象的一个实例,但具有我给出的字段,即 email='',actortype=1, actorid(pk here)=' '。但不是保存后返回的那个,因为它应该给 pk。
-
你能展示你的模型吗?
-
@knbk 模型已添加到问题中。
-
所以你的数据库记录有一个pk。这不会改变您没有使用
AutoField的事实,因此不会执行检索 pk 的 python 逻辑。
标签: python django database django-models django-queryset