繁体   English   中英

DRF - created_by 和 last_updated_by 字段 - 如何使其工作?

[英]DRF - created_by and last_updated_by fields - how to make it work?

如何使created_bylast_updated_by字段在Django REST Framework中工作? 创建 object 时应填充 Created by,并且应在更新 object 时更新last_updated_by

通常的方法是使用CurrentUserDefault但如果last_updated_by未包含在有效负载中,则该方法不适用于 PATCH 方法。

last_updated_by = serializers.HiddenField(default=serializers.CurrentUserDefault())

你知道怎么做吗? 也许最好的方法是修改ViewSet中的serializer程序数据,但我不知道如何。

编辑产品 model

class Product(TimeStampedModel):
    objects = ProductManager()

    created_by = models.ForeignKey('users.User', on_delete=models.CASCADE,
                                   related_name='products', null=True, blank=True,
                                   verbose_name='Created by')

    last_updated_by = models.ForeignKey('users.User', on_delete=models.CASCADE,
                                   related_name='products_updated', null=True, blank=True,
                                   verbose_name='Updated by')

尝试在视图集中移动 created_by、updated_by 逻辑 像这样

class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer

    def perform_create(self, serializer):
        user = self.request.user
        serializer.save(created_by=user)

    def perform_update(self, serializer):
        user = self.request.user
        serializer.save(last_updated_by=user)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM