Django unique_together из поля абстрактной модели - PullRequest
0 голосов
/ 28 декабря 2018

Предположим, у меня есть Абстрактная модель:

class SoftDelete(models.Model):
    _active = models.NullBooleanField(default=True)

class Meta:
    abstract = True

И модель, которая наследует от этой абстрактной модели:

class SomeModel(AbstractModel):
    some_field = models.IntegerField()

class Meta:
    unique_together = ('_active', 'some_field')

Здесь я ограничил some_field с помощью _active поле с использованием unique_together, которое используется имеющейся у меня функцией мягкого удаления.

Это работает и все, кроме того, теперь каждая модель, у которой есть уникальное ограничение, должна применять _active к уникальности, так как после удаленияна самом деле он не удален, только _active = None.

У меня вопрос , так как все мои модели будут наследоваться от SoftDelete, существует ли эффективный способ применения _active ко всем моделям, которыеимеют в своих Metas ограничение unique_together?Вместо того, чтобы вручную добавлять его и, возможно, забыть об этом.

Я надеялся добавить что-то вроде ниже в мета-класс резюме:

For unique_together in child_unique_together:
    unique_together.append('_active')

1 Ответ

0 голосов
/ 29 июля 2019

Отвечая на свой вопрос: я использовал сложный путь и реализовал уникальную модель вместе, так как не мог найти лучшего решения.

...