首页 > 解决方案 > 如何只允许对当前用户的数据进行 POST 和 GET 请求?

问题描述

我只想为每个用户显示他们的数据。所以一个用户不能 GET 或 POST 另一个用户的数据。

class FcaSet(viewsets.ModelViewSet):

    def get_queryset(self): 
        return Fca.objects.filter(user_check= request.user) #user filter
    serializer_class = FcaSerializer
    permission_classes = (permissions.AllowAny,)

但通常它会抛出错误:/api/cutarea-fca/int() 参数的 TypeError 必须是字符串、类似字节的对象或数字,而不是 'AnonymousUser'

接下来我尝试使用这个:

def get_queryset(self): 
        return Fca.objects.filter(user_check= request.user)

但是用户在前端看不到这个模型中的任何一个对象......

它是型号:

class Fca(models.Model):
    num_of_agree = models.ForeignKey(Agreement, models.DO_NOTHING, blank=True, null=True)
    uroch = models.TextField(blank=True, null=True)
    num_allot = models.ForeignKey(Allotment, models.DO_NOTHING, blank=True, null=True)
    num_fca = models.CharField(max_length=50, blank=True, null=True)
    ar_fca = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
    expl_ar = models.FloatField(blank=True, null=True)
    cel_nazn = models.ForeignKey(ForestPurpose, on_delete=models.DO_NOTHING, verbose_name='task',blank=True, null=True) 
    cat_zas = models.ForeignKey(ForestProtection, on_delete=models.DO_NOTHING, verbose_name='cate',blank=True, null=True ) 
    geom = models.MultiPolygonField(geography=True, null=True, blank=True, verbose_name='ge')
    video_cat = models.TextField(blank=True, null=True)
    user_check = models.ForeignKey(User,on_delete=models.DO_NOTHING, verbose_name='user_id',blank=True, null=True )




    class Meta:
        managed = True
        verbose_name = 'lek'
        verbose_name_plural =  'leks'

有序列化器:

class FcaSerializer(gis_serializers.GeoFeatureModelSerializer):

    class Meta:
        model = Fca
        geo_field = 'geom'
        fields = ('id','num_of_agree','num_allot','uroch','num_fca','ar_fca',\
       'expl_ar','cel_nazn','cat_zas','geom','video_cat','user_check')

    def create(self, validated_data):
        return Fca.objects.create(**validated_data)

我希望有人通过简单的示例或伪代码来说明如何解决这个经典任务

标签: djangoauthenticationdjango-viewsdjango-queryset

解决方案


推荐阅读