Arv*_*mar 4 django python-3.x django-rest-framework
我的模型中有以下唯一约束。
class Meta:
unique_together = (('crop', 'order', 'sku'),)
Run Code Online (Sandbox Code Playgroud)
但是在某些情况下 sku 可能为 null,在这种情况下,这个 unique_together 不起作用,因为 null 不等于 null。 'sku'),) else (('crop', 'order'),)。
从django-2.2 开始,您可以利用Django 的约束框架,并在UniqueConstraint[Django-doc] 中添加条件:
from django.db import models
from django.db.models import Q
class MyModel(models.Model):
# …
class Meta:
constraints = [
models.UniqueConstraint(
fields=['crop', 'order', 'sku'],
name='unique_1'
),
models.UniqueConstraint(
fields=['crop', 'order'],
condition=Q(sku=None),
name='unique_2'
)
]Run Code Online (Sandbox Code Playgroud)
请注意,并非每个数据库本身都支持这一点,因此会强制执行这一点。
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |