ValueError: Поле 'id' ожидало число, но получило '10.48.38.28'

Я пытался найти с помощью Rest Framework определенный параметр в sqlite, используя django, но получил следующую ошибку:

return int(value)
ValueError: invalid literal for int() with base 10: '10.48.38.28'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):...
ValueError: Field 'id' expected a number but got '10.48.38.28'.
[27/Sep/2022 13:23:59] "GET /sipinterface/?ipHost=10.48.38.28/ HTTP/1.1" 500 155723

МОДЕЛИ

class sipInterface(models.Model):
    siRealmId=models.CharField(max_length=75)
    siIpAddress=models.CharField(max_length=75)
    siPort=models.IntegerField()
    siTransportProtocol=models.CharField(max_length=75,null=True)
    siAllowAnonymus=models.CharField(max_length=75,null=True)
    ipHost = models.ForeignKey(host, on_delete=models.CASCADE)
    created=models.DateTimeField(auto_now_add=True)
    updated=models.DateTimeField(auto_now_add=True)

    class Meta: #nombre sing y plural de musica
        verbose_name="sipInterface"
        verbose_name="sipInterface"

    def __str__(self):
        return f"{self.siRealmId},{self.siIpAddress},{self.siPort},{self.siTransportProtocol},{self.siAllowAnonymus},{self.ipHost}"

Далее следует файл Serializers: SERIALIZERS:

from rest_framework import serializers
from .models import sipInterface


class sipInterfaceSerializer(serializers.ModelSerializer):
    class Meta:
        model=sipInterface
        fields=['siRealmId','siIpAddress','siPort','siTransportProtocol','siAllowAnonymus','ipHost']

Файл представления является следующим: VIEW

class sipInterfaceList(generics.ListAPIView):

    serializer_class=sipInterfaceSerializer

    def get_queryset(self):
        queryset = sipInterface.objects.all()
        ipHost = str(re.sub(r'/.*',"",self.request.query_params.get('ipHost', None)))
        if ipHost is not None:
            queryset = sipInterface.objects.filter()
            queryset = queryset.filter(ipHost=ipHost)  #<--- THE ERROR!

        else:
            queryset = []
        return queryset

class sipInterfaceDetail(generics.RetrieveAPIView):
    queryset=sipInterface.objects.all()
    serializer_class=sipInterfaceSerializer

    def get_queryset(self):
        queryset = sipInterface.objects.all()
        ipHost = str(re.sub(r'/.*',"",self.request.query_params.get('ipHost', None)))
        if ipHost is not None:
            queryset = sipInterface.objects.filter()
            queryset = queryset.filter(ipHost=ipHost)

        else:
            queryset = []
        return queryset

Я помечаю строку с ошибкой символом #<--- ОШИБКА! Спасибо за помощь

Вы имеете поле ipHost как ForeignKey:

ipHost = models.ForeignKey(host, on_delete=models.CASCADE)

Поэтому если вы хотите фильтровать по нему, то вам нужно передать его pk (id в вашем случае) или искать его поле. Предположим, что ваша модель host имеет поле ip, тогда ваш фильтр должен выглядеть следующим образом:

queryset = queryset.filter(ipHost__ip=ipHost)
Вернуться на верх