[英]django orm how to make sure postgres array field is not an empty list?
I have the following model for django
.我有以下 django 的django
。 This model creates an array field called metric_vals
but it is allowing the array to be an empty array.此 model 创建了一个名为metric_vals
的数组字段,但它允许该数组为空数组。 Is there a way of making sure the array is always a non empty array?有没有办法确保数组始终是非空数组?
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)
You can use the validators
kwarg:您可以使用validators
kwarg:
from django.contrib.postgres.validators import ArrayMaxLengthValidator, ArrayMinLengthValidator
def get_default_list():
return [float(1), float(2)]
class SampleModel(models.Model):
metric_vals = ArrayField(
models.FloatField(null=False),
null=False,
# ensure the default passes the validation
default=get_default_list,
# like this
validators=[
ArrayMinLengthValidator(2),
ArrayMaxLengthValidator(10),
]
)
Related:有关的:
Something like this:像这样的东西:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.