Как настроить фильтр поиска в 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)
)