Reputation: 85
I have model
class Emails(models.Model):
mail_theme = models.CharField(max_length=254, blank=True)
in my view i have added
from rest_framework import filters
class EmailsView(generics.ListCreateAPIView):
permission_classes = (permissions.AllowAny, )
serializer_class = EmailsSerializer
filter_backends = (filters.SearchFilter, DjangoFilterBackend, )
filter_fields = ('is_paid', 'new_item', 'mail_from')
search_fields = 'mail_from'
def get_queryset(self, *args, **kwargs):
return Emails.objects.all()
but when i try to use mail_from
field for search, i had an error:
Cannot resolve keyword 'm' into field. Choices are: id, mail_from
Upvotes: 1
Views: 59
Reputation: 477265
Your search_fields
[Django-doc] should be a collection of strings, for example a singleton tuple. By writing it as a string, Django iterates over the characters, and thus assumes that 'm'
, 'a'
, 'i'
, etc. are all search fields:
from rest_framework import filters
class EmailsView(generics.ListCreateAPIView):
permission_classes = (permissions.AllowAny, )
serializer_class = EmailsSerializer
filter_backends = (filters.SearchFilter, DjangoFilterBackend, )
filter_fields = ('is_paid', 'new_item', 'mail_from')
search_fields = ('mail_from',)
def get_queryset(self, *args, **kwargs):
return Emails.objects.all()
Upvotes: 1