0

How to search by choice value and not the key as in the following:

This model:

CITY_CHOICES = (
    ('Omran', 'عمران'),
    ('AlBayda ', 'البيضاء'),
    ('Hodeidah', 'الحديدة'),
)
class Place(models.Model):
  city = models.CharField(choices=CITY_CHOICES, max_length=20)
  # Manager
  objects = PlaceManager()

This search by city but looking for the key and I want it looking for value

class PlaceQuerySet(models.QuerySet):

    def search(self, query):
        lookup = (
                    Q(city__icontains=query) 
                    )

        return self.filter(lookup)

class PlaceManager(models.Manager):
    def get_queryset(self):
        return PlaceQuerySet(self.model, using=self._db)

    def search(self, query=None):
        if query is None:
            return self.get_queryset().none()
        return self.get_queryset().search(query)
4us group
  • 1
  • 2
  • This question is possible duplicate of https://stackoverflow.com/questions/4727327/django-filter-for-get-foo-display-in-a-queryset – stasiekz Sep 17 '19 at 19:38
  • I do not know how it repeats؟ `city_reverse = dict((v, k) for k, v in CITY_CHOICES) lookup = ( Q(city__icontains=city_reverse[''+query]) | like this reverse not work – 4us group Sep 17 '19 at 19:54
  • Did anyone here say its a Q operation ? – Moha369 Sep 17 '19 at 22:21
  • i slove that thank you – 4us group Sep 17 '19 at 22:32
  • city_reverse = dict((v, k) for k, v in CITY_CHOICES) result = query if query in city_reverse: result = city_reverse[''+query] lookup = ( Q(city__icontains=result) | – 4us group Sep 17 '19 at 22:33

0 Answers0