【问题标题】:how i save post with the current user without viewing all user list in the endpoint in django rest framework我如何在不查看 django rest 框架端点中的所有用户列表的情况下与当前用户一起保存帖子
【发布时间】:2020-04-22 17:54:19
【问题描述】:

我能够使用 django rest api 创建发布博客,它几乎没问题,我发现当我发布请求抛出 DRF 端点 dashbored 时,它会在下拉菜单中查看所有用户列表,我不想要那个,我想要它插入当前用户而不让它在端点中被编辑 这是代码

class Tarh(models.Model):
    title         = models.CharField(max_length=255)
    context       = models.TextField(default="nothing")
    user          = models.ForeignKey(User,on_delete=models.CASCADE)
    publishedDate = models.DateTimeField(auto_now_add=True)
    rating        = models.IntegerField(default=0)
    img           = models.TextField(null=True)

序列化器

class TarhSerializer(serializers.ModelSerializer):
    class Meta:
        model = Tarh
        fields = ( 'title',"user" ,'context','rating','publishedDate','img','pk')

视图集

class TarhViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows Tarh to be viewed or edited.
    """
    queryset = Tarh.objects.all()
    serializer_class = TarhSerializer
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

i wanna hide this dropdown menu of users list

然后将帖子发布给当前用户

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    serializer.save(user=self.request.user) 应该可以工作。您只能将user 字段设为只读,以禁用下拉菜单:

    class TarhSerializer(serializers.ModelSerializer):
        class Meta:
            model = Tarh
            fields = ( 'title',"user" ,'context','rating','publishedDate','img','pk')
            read_only_fields = ("user", )
    

    【讨论】:

    • 非常感谢..它按预期工作,但这安全吗?
    • @AhmedAbdelkhalig 当然,如果您将user 数据标记为read_only,则没有人能够发布它。您可以在文档中找到更多详细信息:django-rest-framework.org/api-guide/serializers/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2020-09-15
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多