作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我被告知将我的 Django 项目中的所有表默认 ID 设置为 postgresql 方法 uuid_generate_v4()
的值。
我正在使用的当前模型的一个示例是:
import uuid
from django.db import models
class MyModel(models.Model):
class Meta:
ordering = ("my_var",)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, blank=True, editable=False)
my_var = models.CharField(max_length=64, unique=True)
我已经明白,不建议将 SQLAlchemy 与 Django 混合使用,那么我怎样才能最好地实现要求我做的事情呢?
(注意:是的,default=uuid.uuid4
不足以满足我的项目要求)
最佳答案
您可以使用Django 的Func
来调用内置的数据库函数。其实对于PostgreSQL,Django是支持RandomUUID
的定义如下:
class RandomUUID(Func):
template = 'GEN_RANDOM_UUID()'
output_field = UUIDField()
可以这样调用:
from django.contrib.postgres.functions import RandomUUID
class MyModel(models.Model):
id = models.UUIDField(primary_key=True, default=RandomUUID)
因此,如果 postgreSQL gen_random_uuid() 不是您所需要的(显然它与 uuid_generate_v4() 不同,如 here 所述),只需创建您自己的 Func
类用 template = 'UUID_GENERATE_V4()'
关于python - 如何使用 Django 将 postgres 表默认 ID 设置为 uuid_generate_v4(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57361570/
我是一名优秀的程序员,十分优秀!