Вот моя структура моделей.Поиск таблиц в django
class Category(models.Model):
name = models.CharField(max_length=100)
class SUBCategory(models.Model):
name = models.CharField(max_length=100)
cat = models.ForeignKey(Category,related_name = 'scat',null = True,blank=True)
class Tags(models.Model):
name = models.CharField(max_length=100)
class FullProfile(models.Model):
user = models.OneToOneField(User)
birthday = models.DateField(null = True,blank=True)
first_name = models.CharField(max_length=100,null = True,blank=True)
middle_name = models.CharField(max_length=100,null = True,blank=True)
last_name = models.CharField(max_length=100,null = True,blank=True)
token = models.CharField (max_length=200,null = True,blank=True)
status = models.CharField(max_length=100,null = True,blank=True)
tags = models.ManyToManyField(Tags,related_name = 'tg',null = True,blank=True)
category = models.ForeignKey(Category,related_name = 'cat',null = True,blank=True)
facebook_url = models.CharField(max_length=100,null = True,blank=True)
twitter_url = models.CharField(max_length=100,null = True,blank=True)
mobile = models.CharField(max_length=100,null = True,blank=True)
landline = models.CharField(max_length=100,null = True,blank=True)
country = models.CharField(max_length=100,choices = COUNTRIES,null=True,blank =True,default='INDIA')
state = models.CharField(max_length=100,null = True,blank=True)
city = models.CharField(max_length=100,null = True,blank=True)
В принципе, пользователь может принадлежать к категории и подкатегории.
Я ищу способ для поиска пользователя, который принадлежит к определенной категории, подкатегории или тегам,
Я просто пытаюсь с основной вещью, как
get_all = FullProfile.objects.filter(
Q(category__id__iexact=cat) |
Q(user__username__icontains=keyword) |
Q(first_name__icontains=keyword)
).distinct()
Пожалуйста скажите мне лучший способ чтобы сделать этот модуль поиска эффективным. Поскольку кто-то еще собирается управлять этим приложением, поэтому я не хочу использовать Haystack для этого небольшого поиска.
Сколько полей вы хотите найти? То, как вы это делаете, прекрасно, если вам не нужно каждый раз запрашивать динамический набор полей. –
на основе тега ключевое слово, которое соответствует имени fir_name или подкатегории категории пользователя и тегам – burning