**已关闭。**此问题正在寻求书籍,工具,软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答案。
我们不允许您提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便您可以通过事实和引用来回答问题。
2天前关闭。
Improve this question的
我们目前正在将一个项目从Python(Django)迁移到Golang(Gin)。在我们的应用程序中,我们使用了reversion库。Golang中是否有等效的库?如果没有,我们如何在Golang中实现此功能的迁移?
@reversion.register()
class DocumentRecommendationMedia(models.Model):
document = models.ForeignKey("Document.Document", on_delete=models.CASCADE)
file = models.FileField(upload_to=settings.DOCUMENT_RECOMMENDATION_PATH)
file_name = models.CharField(max_length=100)
class Meta:
db_table = "document_recommendation_media"
@reversion.register(fields=("recommendation", "date", "media_files"))
class DocumentRecommendation(ArchivableModel):
document = models.ForeignKey("Document.Document", on_delete=models.CASCADE)
recommendation = models.TextField(null=True, blank=True)
date = models.DateTimeField(default=timezone.now)
media_files = models.ManyToManyField(DocumentRecommendationMedia, blank=True)
class Meta:
db_table = "document_recommendation"
字符串
如何在Golang中实现这一点?
1条答案
按热度按时间j2cgzkjk1#
将Django项目迁移到Golang是一个重大的转变,因为Django(一种Python Web框架)和Golang(一种静态类型语言)具有不同的范式和生态系统。当涉及到版本控制或创建模型的历史记录时,在Django中,您可能会使用django-reversion这样的库来管理版本控制和历史记录。
在Golang中,并没有一个与Django的reversion库直接等价的库,因为Golang遵循不同的模式和实践。但是,您可以通过设计自己的解决方案在Golang中实现类似的功能。以下是关于如何实现的基本指南:
为你的模型定义一个结构体:在Golang中,你可以定义一个结构体来表示你的模型。例如:
字符串
版本控制模型:创建另一个结构体来表示模型的版本。这可以包括诸如版本号、时间戳和实际数据之类的字段。
型
实现版本控制逻辑:当你想要版本化你的模型时,创建一个ProductVersion的新示例并单独存储它。你可以使用一个专门用于版本化的数据库表或其他存储机制。
型
如果要检索产品的版本历史记录,请获取与该产品关联的所有ProductVersion示例。
型
请记住,这是一个简化的示例,具体的实现可能会根据您的具体用例和需求而有所不同。此外,您可能需要考虑在迁移过程中如何处理模型和Django项目其他方面之间的关系。建议您仔细规划和测试迁移过程,以确保顺利过渡。