如何为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
相关产品推荐
相关产品推荐

