【问题标题】:save() method for django_comments_xtd modeldjango_comments_xtd 模型的 save() 方法
【发布时间】:2021-11-05 09:07:19
【问题描述】:

我正在使用 Wagtail + Django_cmets_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 上,如果我修改了已经有一些 cmets 的现有帖子并再次发布修改后的帖子,我认为不应再触发 PostComment.save()。但是,在我的调试过程中,我发现它被意外触发了。

我想我需要微调 PostComment.save() 以实现上述意图。

经过对 StackOverflow 的一些研究,

我意识到我可能需要在 save() 中使用 PostComment._state.addingforce_insert 来实现我的意图。

谁能告诉我应该如何微调PostComment.save()

【问题讨论】:

    标签: django wagtail django-comments


    【解决方案1】:

    我自己设法弄明白了。我使用 ParentalKeyPostComment 模型链接到 wagtail 页面模型 PostPage

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

    由于 modelclusterParentalKey 的来源)的工作方式,每次 PostPage 被修订和重新发布时,@ 987654328@ 将被触发。

    ParentalKey更改为models.ForeignKey后,PostPage之后不再触发PostComment.save() 已修订并重新发布。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 2013-09-13
      • 2021-11-21
      • 1970-01-01
      • 2021-02-28
      相关资源
      最近更新 更多