Использование pghistory с пользовательскими именами таблиц событий

В настоящее время я тестирую pghistory для нашего проекта Django. Я установил несколько моделей для отслеживания. По традиции имена наших моделей отличаются от имен таблиц - они определяются в классе Meta следующим образом:

class Delivery(models.Model):
    created = models.DateTimeField(auto_now_add=True, editable=False)
    creator = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='deliveries', on_delete=models.PROTECT, editable=False)
    ...

    class Meta:
        db_table = 'ep_delivery'

Когда я украшаю модель с помощью @pghistory.track(), результирующая таблица событий называется моделью, которая в данном примере DeliveryEvent. Но я бы предпочел, чтобы она называлась ep_delivery_event, чтобы соответствовать нашим соглашениям. Как я могу этого добиться?

You can use the model_name option with pghistory.track to control the table name. So here it would be :

@pghistory.track(model_name="ep_delivery_event")

I found out that I can solve this by providing a custom event model:

https://django-pghistory.readthedocs.io/en/3.5.1/event_models/#configuration-with-pghistorytrack

Contrary to the other answer providing a model name does not solve this.

The code looks now something like this:

class Delivery(models.Model):
    created = models.DateTimeField(auto_now_add=True, editable=False)
    creator = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='deliveries', on_delete=models.PROTECT, editable=False)
    ...

    class Meta:
        db_table = 'ep_delivery'
BaseTrackedModelEvent = pghistory.create_event_model(Delivery)


class DeliveryEvent(BaseTrackedModelEvent):
    class Meta:
        db_table = 'ep_delivery_event'
Вернуться на верх