django_comments_xtd 模型的 save() 方法

save() method for django_comments_xtd model

我正在使用 Wagtail + Django_comments_xtd + Django。

My_Django_App/models.py

from wagtail.core.models import Page
class PostPage(Page):
  ...


from django_comments_xtd.models import XtdComment
class PostComment(XtdComment):
    page = ParentalKey('PostPage', on_delete=models.CASCADE, related_name='rn_comments')

    def save(self, *args, **kwargs):
        if self.user:
            self.user_name = self.user.username
        self.page = PostDetail.objects.get(pk=self.object_pk)
        super(PostComment, self).save(*args, **kwargs)

在 Wagtail CMS 上,如果我修改现有的已经有一些评论的 post 并再次发布修改后的 post,我认为 PostComment.save() 不应再触发。然而,在我调试的过程中,我发现它被意外触发了。

我想我需要微调PostComment.save()才能达到上述目的。

经过对 Whosebug 的一些研究,

我意识到我可能需要在 中使用 PostComment._state.addingforce_insert ]save()达到我的目的。

任何人都可以告诉我应该如何微调 PostComment.save() 吗?

我设法自己弄明白了。我正在使用 ParentalKey 到 link PostComment 模型到 wagtail 页面模型 PostPage.

class PostComment(XtdComment):
    # page = ParentalKey('PostPage', on_delete=models.CASCADE, related_name='rn_comments')

由于 modelclusterParentalKey 的来源)的工作方式,每次 PostPage修改后重新发布,将触发PostComment.save()

我把ParentalKey改成models.ForeignKey[=39=后,PostComment.save()PostPage修改后重新发布后不再触发

class PostComment(XtdComment):
    # page = models.ForeignKey('PostPage', on_delete=models.CASCADE, related_name='rn_comments')