You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Django项目的pghistory自定义事件表名称?

解决pghistory自定义事件表名的问题

你可以通过两种方式实现自定义事件表名,契合团队的命名惯例:

方法一:直接在@pghistory.track()中指定table_name参数

这是最简洁的方式,直接在装饰器里传入目标表名即可:

import pghistory

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(table_name='ep_delivery_event')
class Delivery(models.Model):
    # 模型字段和Meta类不变
    ...

方法二:自定义事件模型并设置db_table

如果需要对事件模型做更多自定义(比如添加额外字段、修改其他Meta属性),可以手动创建事件模型并关联:

import pghistory
from pghistory.models import EventModel

# 自定义事件模型,指定db_table
class DeliveryEvent(EventModel):
    class Meta:
        db_table = 'ep_delivery_event'

# 在track装饰器中指定自定义的事件模型
@pghistory.track(event_model=DeliveryEvent)
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'

两种方法都能让生成的事件表名为ep_delivery_event,你可以根据实际需求选择。

内容的提问来源于stack exchange,提问作者sers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:59:50