You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Rest框架:创建博客时如何自动保存当前用户为作者?

自动设置当前用户为博客作者的实现方案

1. 调整模型字段(models.py)

首先修改Blog模型的author字段,移除blank=True和null=True参数——既然要自动填充作者,就不需要允许该字段为空:

class Blog(models.Model):
    author = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE)  # 强制必填,自动填充
    blog_title = models.CharField(max_length=200, unique=True)

2. 配置序列化器(serializers.py)

将author字段设为只读,避免前端提交自定义值,同时保留返回时的作者信息:

class BlogSerializer(serializers.ModelSerializer):
    class Meta:
        model = Blog
        fields = '__all__'  # 或明确指定需要的字段,比如['blog_title', 'author']
        read_only_fields = ['author']  # 标记为只读,禁止前端传入

3. 重写视图创建逻辑(views.py)

在BlogViewSet中添加perform_create钩子方法,创建博客时自动把当前登录用户赋值给author字段:

class BlogViewSet(viewsets.ModelViewSet):
    queryset = Blog.objects.all().order_by('-id')
    serializer_class = BlogSerializer
    pagination_class = BlogPagination
    lookup_field = 'blog_slug'

    def get_permissions(self):
        if self.action in ['retrieve', 'list']:
            permission_classes = [IsOwnerOrReadOnly]
        else:
            permission_classes = [IsOwnerOrReadOnly & IsAuthorGroup]
        return [permission() for permission in permission_classes]
    
    # 自动绑定当前登录用户为博客作者
    def perform_create(self, serializer):
        serializer.save(author=self.request.user)

这样配置后,用户创建博客时无需手动选择作者,系统会自动将当前登录用户设为该博客的作者。

内容的提问来源于stack exchange,提问作者boyenec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:15:29