Django的宁静创建API标志着一个新的条目上创作为编辑

问题描述 投票:0回答:1

我一直在跟踪的评论编辑历史使用Django的简单历史我的应用程序,我已经能够跟踪编辑的意见,但只是意识到我还跟踪在创建条目。即新的条目添加到历史记录表上创建。

我的模型

class Comments(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateField(auto_now=True)
    body = models.TextField(max_length=200)
    is_Child = models.BooleanField(default=False)
    author = models.ForeignKey(User, related_name='author_rel',
                               on_delete=models.CASCADE)
    article = models.ForeignKey(Article, related_name='comments',
                                on_delete=models.CASCADE, null=False)
    parent = models.ForeignKey('self', null=True, blank=True,
                               on_delete=models.CASCADE, related_name='threads')
    history = HistoricalRecords()

    def __str__(self):
        return str(self.body)

    class Meta:
        ordering = ['-created_at']

我的观点类

class CommentsListView(ListCreateAPIView):
    serializer_class = CommentSerializer
    permission_classes = (IsAuthenticatedOrReadOnly,)
    queryset = Comments.objects.all()
    renderer_classes = (CommentJSONRenderer,)

    def create(self, request, slug, *args, **kwargs):
        serializer_context = {
            'request': request,
            'article': get_object_or_404(Article, slug=self.kwargs["slug"])
        }

        article = Article.objects.filter(slug=slug).first()
        data = request.data
        serializer = self.serializer_class(
            data=data, context=serializer_context)
        serializer.is_valid(raise_exception=True)
        serializer.save(author=self.request.user, article_id=article.pk)
        return Response(serializer.data, status=status.HTTP_201_CREATED)
python django-simple-history
1个回答
0
投票

这就是django-simple-history行为的一部分,但你可以做的就是删除该类型的记录在signal如果你不想来存储信息。

from django.dispatch import receiver
from simple_history.signals import (
    post_create_historical_record
)

@receiver(post_create_historical_record)
def post_create_historical_record_callback(sender, **kwargs):
    history_instance = kwargs['history_instance']
    if history_instance.get_history_type_display() == "Created":
        history_instance.delete()
© www.soinside.com 2019 - 2024. All rights reserved.