在DRF中创建用户时,如何调用ActivityLog ModelViewSet添加日志?
创建用户时自动生成ActivityLog记录的最优方案
你完全没必要绕远路调用ActivityLog的API端点,直接在UserViewSet里重写perform_create()方法,操作ActivityLog模型创建实例就够了,这是最直接高效的实现方式。
具体实现代码
from rest_framework import viewsets from .models import User, ActivityLog from .serializers import UserSerializer class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer def perform_create(self, serializer): # 先保存新用户实例 new_user = serializer.save() # 直接创建对应的ActivityLog记录 ActivityLog.objects.create( user=new_user, activity_type="user_registration", # 自定义活动类型,比如用户注册 points=0, # 按业务需求设置初始积分 description=f"用户{new_user.username}完成注册" # 补充你的ActivityLog模型所需的其他字段 )
为什么不调用端点?
直接操作模型避免了额外的HTTP请求开销,逻辑更集中,后续维护也更方便——不用处理API调用可能出现的网络问题、重复权限校验等冗余步骤,一步到位完成关联记录的创建。
内容的提问来源于stack exchange,提问作者Bring Coffee Bring Beer
相关产品推荐
相关产品推荐

