我希望執行以下操作:
constraints = [models.CheckConstraint(check=Length('code')==5, name='code_length')]
它失敗是因為check引數需要是一個
AQ 物件或布爾運算式,它指定您希望約束強制執行的檢查
我沒有看到字串長度欄位查找,也沒有看到將Length資料庫函式合并到 Q 物件引數中的方法。唯一的其他選擇是布爾運算式(這是我在上面失敗的嘗試中的目標),但顯然這是我必須實作的API 。
我是 Django 的新手,希望能得到幫助。
uj5u.com熱心網友回復:
你可以注冊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')
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/412653.html
標籤:
