Использование 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'