Абстрактный ForeignKey без использования GenericForeignKey - PullRequest
0 голосов
/ 15 мая 2019

Для создания общего управления версиями для моих моделей я создал модель Version:

class Version(models.Model):
    version_number = models.IntegerField()
    ...

и абстрактные модели VersionedModel

class VersionedModel(models.Model):
    ...
    versions = models.ManyToManyField(Version, related_name="%(app_label)s_%(class)s")

class Meta:
    abstract = True

все работает, но я быхотел бы, чтобы база данных проверяла, что каждая версия назначена одному и только одному объекту.

Что я могу придумать, так это изменить поле versions и использовать through для создания и промежуточной таблицы, где я мог бы затем использовать уникальный индекс для version_id, но я только вернулся к первоначальной проблемесоздание поля ForeingKey для абстрактной модели.

Мне не нравится использовать GenericForeignKey, поскольку они создают всевозможные головные боли при работе с графеном.Я задавался вопросом, есть ли способ смоделировать это по-другому, или использовать какое-то ограничение, о котором я не знаю, чтобы база данных могла обеспечить полноту и уникальность самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...