小能豆

Django 一次保存并返回对象(使用自定义pk)

py

我正在使用自定义创建方法创建模型的对象,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变量中获取最近创建的对象,可能是我做错了什么,请帮忙。

我正在使用插入前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'

阅读 23

收藏
2024-12-31

共1个答案

小能豆

actors除非您手动创建表,否则ActorID不会自动设置。根据您的数据库后端,None可能会被视为与空字符串相同,因此可能是有效的主键。我相信 Django 会采取特殊措施来更新行(如果存在具有相同主键的行,除非您forceinsert=True在调用时指定save()

2024-12-31