Django DRF gettiing ValueError: Поле 'id' ожидало число, но получило ошибку 'test'

Я пытаюсь реализовать функцию фильтрации в моем приложении Django. Я использую DRF и получаю следующую ошибку, когда я нажимаю на любую опцию в моем html шаблоне:

ValueError: Field 'id' expected a number but got 'test'.

Я следовал этой записи для создания этой страницы, но я не уверен, как избавиться от ошибки. Я пытался изменить default в моем файле миграции, но это не помогло. Когда я меняю values_list('client_type__title') на values_list('client_type') все в порядке, но вместо заголовка показывается id.

файл миграции

class Migration(migrations.Migration):

dependencies = [
    ('testapp', '0007_team_publish'),
]

operations = [
    migrations.CreateModel(
        name='ClientType',
        fields=[
            ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('title', models.CharField(default='-', help_text='max 150 characters', max_length=150)),
            ('body', models.CharField(default='-', help_text='max 400 characters', max_length=400, verbose_name='Description')),
            ('slug', models.SlugField(blank=True, default='')),
            ('publish', models.DateTimeField(default=django.utils.timezone.now, verbose_name='publish')),
        ],
        options={
            'ordering': ('-publish',),
            'get_latest_by': 'publish',
        },
    ),
    migrations.AddField(
        model_name='product',
        name='client_type',
        field=models.ManyToManyField(blank=True, related_name='client_type_product', to='testapp.ClientType', default='-'),
    ),
]

models.py

class ClientType(models.Model):
    title = models.CharField(max_length=150, default='-', blank=False, null=False, help_text='max 150 characters')
    body = models.CharField(verbose_name ='Description', max_length=400, default='-', blank=False, null=False, help_text='max 400 characters')
    slug = models.SlugField(default='', blank=True)
    publish = models.DateTimeField('publish', default=timezone.now)
    
        
    def __str__(self):
        return str(self.title)


class Product(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField('title', max_length=400, blank=False, null=False, help_text='max 400 characters', default='')
    client_type = models.ManyToManyField(ClientType, related_name='client_type_product', blank=True, default='-')
    publish = models.DateTimeField('Published on', default=timezone.now)

views.py

def get_client_types(request):
    if request.method == "GET" and request.is_ajax():
        client_types = Product.objects.exclude(client_type__isnull=True).order_by('client_type').values_list('client_type__title').distinct()
        client_types = [i[0] for i in list(client_types)]
        data = {
            "client_types": client_types, 
        }
        return JsonResponse(data, status = 200)

urls.py

urlpatterns = [
    path("ajax/client_type/", views.get_client_types, name = 'get_client_types'),
]

test.js

РЕДАКТИРОВАНИЕ:

Я также добавил StringRelatedField и он показывает мне текстовые значения, но только в моей таблице. В фильтрах ничего не меняется.

class ProductSerializers(serializers.ModelSerializer):
    client_type = serializers.StringRelatedField(many=True, read_only=True)
    class Meta:
        model = Product
        fields = '__all__'
Вернуться на верх