python - django orm 如何确保 postgres 数组字段不是空列表?
问题描述
我有以下模型django
。该模型创建了一个名为的数组字段,metric_vals
但它允许该数组为空数组。有没有办法确保数组始终是非空数组?
from django.db import models
import uuid
from django.contrib.postgres.fields import ArrayField
class SampleModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
metric_vals = ArrayField(models.FloatField(null=False), null=False, default=list)
解决方案
像这样的东西:
from django.core.exceptions import ValidationError
class SampleModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
metric_vals = ArrayField(models.FloatField(null=False), null=False, default=list)
def save(self, *args, **kwargs):
if self.metric_vals == []:
raise ValidationError('Empty list not allowed')
super().save(*args, **kwargs)
推荐阅读
- php - 尝试上传文件php时出现oci_excute错误
- css - CSS 剪辑路径在元素堆栈顺序之前中断伪 ::before
- javascript - 从 javascript 访问 mongodb+nodjs?
- ios - iOS 以编程方式更改所有默认颜色
- python - 在pyQt4中的图像上涂鸦板
- javascript - 拼接不会覆盖 forEach 循环内指定索引处的数组中的元素
- json - Spring + React 获取数据
- css - 等效于使用 Qt 或 GTK 生成平铺 png 的 CSS 网格模板列
- github - 如何在 GitHub 页面上更新我的博客文章
- applescript - AppleScript 不从日历运行