Ошибка: объект 'QuerySet' не имеет атрибута '_meta'

При вызове API обновления я получаю ошибку: объект 'QuerySet' не имеет атрибута '_meta'. Пожалуйста, взгляните на мой код, не уверен, где я ошибаюсь.

models.py

class FarmerAdvisory(models.Model):
    '''
    Farmer Advisory model definition
    '''
    CATEGORY_CHOICES = (
        ("CROP", "CROP"),
        ("WEATHER", "WEATHER"),
        ("FARMLAND", "FARMLAND")
    )
    SUB_CATEGORY_CHOICES = (
        # ("CROP", "CROP"),
        # ("WEATHER", "WEATHER"),
        # ("FARMLAND", "FARMLAND")
    )
    STATUS_CHOICES = (
        ('OPEN', 'OPEN'),
        ('IN-PROGRESS', 'IN-PROGRESS'),
        ('CLOSED', 'CLOSED')
    )
    id = models.AutoField(db_column='id', primary_key=True)
    category = models.CharField(db_column='category', max_length=100, null=False, blank=False, choices=CATEGORY_CHOICES)
    sub_category = models.CharField(db_column='sub_category', max_length=100, null=False, blank=False)
    # ,choices=SUB_CATEGORY_CHOICES)
    title = models.CharField(db_column='title', max_length=200, null=True, blank=True)
    description = models.CharField(db_column='description', max_length=500, null=True, blank=True)
    media = models.JSONField(db_column='media', blank=True, null=True)
    status = models.CharField(db_column='status', max_length=15, null=False, blank=False, default='OPEN',
                              choices=STATUS_CHOICES)
    # assigned_to =
    reply = models.CharField(db_column='reply', max_length=500, null=True, blank=True)
    reply_media = models.JSONField(db_column='reply_media', blank=True, null=True)
    label = models.CharField(db_column='label', max_length=100, null=True, blank=True)
    farmer_id = models.ForeignKey(Farmer, on_delete=models.CASCADE, db_column='farmer_id')
    objects = models.Manager()

    class Meta:
        managed = True
        db_table = 'farmer_advisory'

serializers.py

class FarmerAdvisorySerializer(serializers.ModelSerializer):
    class Meta:
        model = FarmerAdvisory
        fields = '__all__'

views.py

class FarmerAdvisoryObjectView(ShortCircuitMixin, APIView):
    def put(self, request, farmer_id, adv_id):
        try:
            farmer_adv = FarmerAdvisory.objects.filter(farmer_id=farmer_id, id=adv_id)
            serializer = FarmerAdvisorySerializer(farmer_adv, data=request.data)
            if serializer.is_valid(raise_exception=True):
                serializer.save()
                response = JsonResponse(serializer.data, status=status.HTTP_201_CREATED)
                return response
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

        except Exception as ex:
            logger.error(traceback.format_exc())
            return Response(data={"Error": str(ex)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)

`

urls.py

`

path('mobile/v1.1/farmer/<int:farmer_id>/farmer-adv/<int:adv_id>', FarmerAdvisoryObjectView.as_view(),
     name='farmer_advisory_put')

Я ожидал, что update api будет работать и обновлять модель на основе параметров пути.

Я думаю, что вам нужно использовать запрос get вместо filter вот так...

farmer_adv = FarmerAdvisory.objects.get(farmer_id=farmer_id, id=adv_id)
serializer = FarmerAdvisorySerializer(farmer_adv, data=request.data)
Вернуться на верх