[英]DRF - created_by and last_updated_by fields - how to make it work?
如何使created_by
和last_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.