UniqueConstraints не работает?Python

Программы на Python
Ответить
Anonymous
 UniqueConstraints не работает?

Сообщение Anonymous »

class DataStatus(DjangoChoices):
draft = ChoiceItem("draft", _("Draft"))
active = ChoiceItem("active", _("Active"))

class BaseDataModel(models.Model):
class Meta:
abstract = True

class DataModel(BaseDataModel, models.Model):
"""Model class for Purchase Request."""

class Meta:
constraints = [
models.UniqueConstraint(fields=["user"], condition=Q(status="draft"), name="unique_draft_user"),
]

user = models.ForeignKey(
User,
related_name="+",
on_delete=models.CASCADE,
blank=True,
null=True,
)
status = models.CharField(
max_length=255,
null=True,
default=DataStatus.draft,
choices=DataStatus.choices,
)

Однако мне кажется, что я легко создаю несколько моделей данных для одного и того же пользователя, даже если явно устанавливаю статус «черновик»:
DraftModel.objects.create(user=some_user, status="draft")

Я также заметил, что после того, как я добавил ограничения и запустил:
manage.py makemigrations

Джанго сказал, что миграцию применять нельзя.
Почему ограничение уникальности не работает?

Это выполняется на django 4.2.16 с использованием базы данных Postgres.
PostgreSQL 15.6 (Homebrew) on aarch64-apple-darwin23.2.0, compiled by Apple clang version 15.0.0 (clang-1500.1.0.2.5), 64-bit


Подробнее здесь: https://stackoverflow.com/questions/792 ... ot-running
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»