Как разрешить POST и GET-запрос только для данных текущих пользователей? - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу показать только свои данные для каждого пользователя. Таким образом, один пользователь не может получить или отправить данные другого пользователя.

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,)

Но обычно выдает ошибку: TypeError в / api / cutarea-fca / Аргумент int () должен быть строкой, байтовоподобным объектом или числом, а не 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)

Надеюсь, кто-нибудь напишет, как решить эту классическую задачу на простом примере или в коде psedo

...