【发布时间】: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?请注意,
defaultkwarg 与在数据库级别设置默认值不同。 -
使用 psycopg2 通过另一个 api 服务器使用原始 sql 完成插入
-
正如我上面所说的
defaultkwarg 没有在数据库级别设置默认值,这是 Django 在插入新记录时所做的事情。所以它们在数据库中没有默认设置。如果要使用原始查询插入,则必须提供值或调用函数以在查询中生成它。
标签: python-3.x django postgresql django-models