ValueError: Невозможно выполнить запрос "sohanur": Должен быть экземпляр "CustomUser"

Я пытаюсь отфильтровать список поставщиков в соответствии с request.user.vendor. Это работает и позволяет получить запрашиваемого пользователя, но здесь я не могу выполнить запрос по списку поставщиков. Vendor имеет отношение onetoone с моим пользовательским пользователем. Как сделать запрос?

#это моя модель

class CustomUser(AbstractUser):
    number = models.CharField(max_length=200, blank=True, null=True)
    isVendor = models.BooleanField(default=False, blank=True, null=True)

class Vendor(models.Model):
    user = models.OneToOneField(CustomUser, related_name='vendor', on_delete=models.CASCADE, null=True, blank=True)
    distributor_for = models.ManyToManyField(Distributor, null=False, blank=True)
    name = models.CharField(max_length=200, blank=True, null=True)
    profile_picture = models.ImageField(null=True, blank=True)
    address = models.TextField(max_length=2000, blank=True, null=True)
    latitude = models.DecimalField(max_digits = 13, decimal_places = 7, blank=True, null=True)
    longitude = models.DecimalField(max_digits = 13, decimal_places = 7,blank=True, null=True)
    is_verified = models.BooleanField(default=False)
    createdAt = models.DateTimeField(auto_now_add=False, null=True, blank=True)

    def __str__(self):
        return self.name

#это мое представление api

@api_view(['GET'])
@permission_classes([IsVendor])
def getVendors(request):
    user = request.user.vendor
    print(user)
    vendor = Vendor.objects.all().filter(user=user)
    serializer = VendorSerializer(vendor, many=False)
    return Response(serializer.data)

#это мой сериализатор

class VendorSerializer(serializers.ModelSerializer):
    user = serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = Vendor
        fields = '__all__'

    def get_user(self, obj):
        user = obj.user
        serializer = UserSerializer(user, many=False)
        return serializer.data

##Error

проверьте мою ошибку traceback и, пожалуйста, помогите мне решить это.

Это выглядит неправильно, хотя не вся информация доступна в вопросе

user = request.user.vendor                       # a Vendor instance
vendor = Vendor.objects.all().filter(user=user)  # user field -> CustomUser
                                                 # =user, Vendor instance

Должно быть .filter( user=request.user) ?

измените запрос на

vendor = Vendor.objects.filter(user=user)

в вашем представлении API.

Вернуться на верх