Allow expressions in UniqueConstraint (#806)

* Allow expressions in UniqueConstraint

* Use ellipsis

* And for fields
This commit is contained in:
Tom Carrick
2022-01-06 10:07:24 +01:00
committed by GitHub
parent 3761c16c51
commit 118f50307c

View File

@@ -1,8 +1,9 @@
import enum import enum
from typing import Any, Optional, Sequence, Tuple, Type, TypeVar from typing import Any, Optional, Sequence, Tuple, Type, TypeVar, Union
from django.db.backends.base.schema import BaseDatabaseSchemaEditor from django.db.backends.base.schema import BaseDatabaseSchemaEditor
from django.db.models.base import Model from django.db.models.base import Model
from django.db.models.expressions import Combinable
from django.db.models.query_utils import Q from django.db.models.query_utils import Q
_T = TypeVar("_T", bound="BaseConstraint") _T = TypeVar("_T", bound="BaseConstraint")
@@ -27,9 +28,15 @@ class CheckConstraint(BaseConstraint):
def __init__(self, *, check: Q, name: str) -> None: ... def __init__(self, *, check: Q, name: str) -> None: ...
class UniqueConstraint(BaseConstraint): class UniqueConstraint(BaseConstraint):
fields: Tuple[str] expressions: Tuple[Combinable, ...]
fields: Tuple[str, ...]
condition: Optional[Q] condition: Optional[Q]
deferrable: Optional[Deferrable] deferrable: Optional[Deferrable]
def __init__( def __init__(
self, *, fields: Sequence[str], name: str, condition: Optional[Q] = ..., deferrable: Optional[Deferrable] = ... self,
*expressions: Union[str, Combinable],
fields: Optional[Sequence[str]] = ...,
name: str,
condition: Optional[Q] = ...,
deferrable: Optional[Deferrable] = ...,
) -> None: ... ) -> None: ...