在 Django 中,如何处理与 Post 对象关联的图像的并发更改?
这是以前提出过的问题,但并不完全涵盖相同的问题。我已经阅读了这些(问题、问题、问题和问题),但问题略有不同。
我有一个博客文章模型(速度的伪代码),其中包含标题、摘要和正文以及相关的图像。
class Post(models.Model):
title = CharField
abstract = TextField
body = TextField
class Image(models.Model):
post = ForeignKey(Post)
imagefile = ImageField
现在,我要添加的是存储此Post
模型更改历史的能力。为此,我想到了两种可能性:
可能性 1
class PostHistory(models.Model):
post = ForeignKey(Post)
title_delta = TextField
abstract_delta = TextField
body_delta = TextField
但是,这存在一个问题,即它正在存储没有更改的增量(例如,当title
没有更改并且该body
字段只有一个增量时。也就是说,当多个字段更改时,它适合 '1 revision == 1 complete修订'。
可能性 2
class PostRevision(models.Model):
post = ForeignKey(Post)
field = CharField #Field name
delta = TextField
通过两种不同的方法,这成功地为我提供了该领域的差异历史,我将使用diff-match-patch生成它(比内置的difflib性能略高)。我现在遇到的两个问题与主对象的生成有关(即链中的最高修订版)。
提出的问题是:如何处理与 Post 对象关联的图像的并发更改?这些将通过模型body
字段中的引用进行更改Post
(这是一个 Markdown 格式的文本字段,然后POST
在表单上进行编辑以添加到图像字段的 URL 引用中)。处理这个问题的最佳方法是在修订版和对象上使用 M2M 字段Post
,允许图像始终与PostRevision
对象一起存储吗?