Как настроить фильтр поиска в django rest framework

Модель

class Student(models.Model):
        id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
        first_name = models.CharField(verbose_name=_('first name'), max_length=20, blank=True, null=True)
        last_name =models.CharField(verbose_name=_('last name'), max_length=20, blank=True, null=True)
        
class Bicycle(models.Model):
            id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
            name = models.CharField(verbose_name=_('bicycle name'), max_length=20, blank=True, null=True)
            student_id = models.UUIDField(default=uuid4)

Вид:

class BicycleList(AdUpdateMixin, AdDestroyMixin, AdListMixin, AdCreateMixin, generics.GenericAPIView):
    permission_classes = [IsAuthenticated]
    queryset = Bicycle.objects.all()
    search_fields = ['name', 'id', 'first_name', 'last_name']

Теперь я хочу создать пользовательское поле поиска в django rest framework. Чтобы я мог искать по имени_и фамилии, а также по фамилии_имени.

Если вы можете использовать student в качестве внешнего ключа в Bicyle Model, тогда вы можете сделать запрос следующим образом:

from django.db.models import Q
Bicycle.objects.filter(
 Q(student__first_name__icontains=t)
 | Q(student__first_name__icontains=t)
 )
Вернуться на верх