Как определить ограничение проверки по длине строки (Django)
Я хочу сделать следующее:
constraints = [models.CheckConstraint(check=Length('code')==5, name='code_length')]
Не получается, потому что аргумент check
должен представлять собой
Объект Q или булево выражение, которое определяет проверку, которую вы хотите обеспечить ограничением
Я не вижу длины строки поля поиска и не вижу способа включить функцию базы данных Length в аргумент объекта Q. Единственным другим вариантом является булево выражение (на что я и нацелился в своей неудачной попытке выше), но, очевидно, это API, который я должен реализовать.
Я новичок в Django и буду благодарен за помощь.
Вы можете зарегистрировать Length
на CharField
:
from django.db.models import CharField
from django.db.models.functions import Length
CharField.register_lookup(Length)
и затем определите ограничение с зарегистрированным __length
поиском:
from django.db import models
from django.db.models import Q
class SomeModel(models.Model):
# …
class Meta:
constraints = [
models.CheckConstraint(check=Q(code__length=5), name='code_length')
]