【问题标题】:What is similar to postgresql uuid DEFAULT uuid_generate_v4() in a Django Model?与 Django 模型中的 postgresql uuid DEFAULT uuid_generate_v4() 有什么相似之处?
【发布时间】:2021-08-23 16:11:27
【问题描述】:

下面的 Django 模型中的 postgresql 模式有什么相似之处?当前模型在向数据库中插入时,会在“account_uuid”列中给出错误空值违反非空约束。直接在 postgresql 中生成表时,插入工作正常。

postgresql 架构示例:

CREATE TABLE accounts (
    account_uuid uuid DEFAULT uuid_generate_v4()
);

django 模型尝试:

import uuid
from django.db import models

class Account(models.Model):
    account_uuid = models.UUIDField(
        default=uuid.uuid4,
        editable=False)

【问题讨论】:

  • 如何执行插入?通过自己编写 SQL?请注意,default kwarg 与在数据库级别设置默认值不同。
  • 使用 psycopg2 通过另一个 api 服务器使用原始 sql 完成插入
  • 正如我上面所说的 default kwarg 没有在数据库级别设置默认值,这是 Django 在插入新记录时所做的事情。所以它们在数据库中没有默认设置。如果要使用原始查询插入,则必须提供值或调用函数以在查询中生成它。

标签: python-3.x django postgresql django-models


【解决方案1】:

当您在数据库中有数据时添加它吗?如果是,则需要为每条记录添加 account_uuid 值。

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 2022-08-14
    • 2015-10-24
    • 2011-12-23
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    相关资源
    最近更新 更多