我正在使用自定义创建方法创建模型的对象,create_actor如下所示:
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变量中获取最近创建的对象,可能是我做错了什么,请帮忙。
actor_entry
我正在使用插入前SQL 触发器在数据库中生成 uuid 作为 pk(此处为 CharField),因此对象在保存之前确实有一个 pk(由数据库生成)。
Actors 模型
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除非您手动创建表,否则ActorID不会自动设置。根据您的数据库后端,None可能会被视为与空字符串相同,因此可能是有效的主键。我相信 Django 会采取特殊措施来更新行(如果存在具有相同主键的行,除非您forceinsert=True在调用时指定save()