1

これが私のモデル構造です。

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 を使用したくありません。

4

1 に答える 1

0

これら 3 つのフィールドのみに基づいて検索する必要がある場合は、問題なく実行できます。LIKEテーブルが大きくなった場合、 SQL ステートメントでインデックスを使用できる限り、検索対象のフィールドにインデックスを作成する必要があります。

潜在的なフィールドのセットが大きくなる場合は、django-filter のようなものを使用してフォームでフィルタリングを行うことを検討してください。

于 2013-02-14T21:45:21.193 に答える