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 的一些研究,
- Identifying new Model Instance in Django Save with UUID pk
- In a django model custom save() method, how should you identify a new object?
我意识到我可能需要在 中使用 PostComment._state.adding
和 force_insert
]save()
达到我的目的。
任何人都可以告诉我应该如何微调 PostComment.save()
吗?
我设法自己弄明白了。我正在使用 ParentalKey
到 link PostComment
模型到 wagtail 页面模型 PostPage
.
class PostComment(XtdComment):
# page = ParentalKey('PostPage', on_delete=models.CASCADE, related_name='rn_comments')
由于 modelcluster
(ParentalKey
的来源)的工作方式,每次 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')
我正在使用 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 的一些研究,
- Identifying new Model Instance in Django Save with UUID pk
- In a django model custom save() method, how should you identify a new object?
我意识到我可能需要在 中使用 PostComment._state.adding
和 force_insert
]save()
达到我的目的。
任何人都可以告诉我应该如何微调 PostComment.save()
吗?
我设法自己弄明白了。我正在使用 ParentalKey
到 link PostComment
模型到 wagtail 页面模型 PostPage
.
class PostComment(XtdComment):
# page = ParentalKey('PostPage', on_delete=models.CASCADE, related_name='rn_comments')
由于 modelcluster
(ParentalKey
的来源)的工作方式,每次 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')