【发布时间】:2018-12-03 14:14:52
【问题描述】:
示例代码:
class Post(models.Model):
...
class Comment(models.Model):
...
post = models.ForeignKey(Post, related_name='comments',
on_delete=models.CASCADE, null=False)
post_comment_number = models.PositiveIntegerField(unique=True, null=False)
想象一个博客文章下面有一堆 cmets。我想为这些 cmets 中的每一个分配一个辅助 ID,表示评论和博客文章之间的关系 - 例如:评论 #1:...,评论 #2:...,等等。
我不想在前端执行此操作,因为例如,如果评论 #2 被删除,我不想再次为与此特定博客文章关联的另一个评论分配 #2 ID。
关于如何做到这一点的任何想法?非常感谢!
【问题讨论】:
-
Django 不允许在同一个模型中有多个
AutoField(并且第一个已经被id字段使用)。您可以创建一个单独的计数器表来跟踪post+comment_id对并覆盖save()方法以获取该帖子的下一个评论ID。不过,这可能会导致竞争条件,因此还要研究行锁定。 -
@Selcuk 能否请你给我看一个例子 - 或者给我指一个资源 - 用行锁定来做这个?
-
@Selcuk 非常感谢!我整天都在搜索,以为我在stackoverflow上看到了几乎所有与此相关的问题,但不知何故错过了那个问题。如果您愿意,请随时添加一些内容作为答案,以便我接受。
-
如果您似乎在那里找到了答案,您可以将此问题标记为重复,以便将来的读者也可以参考其他问题。
标签: python sql django postgresql