class_docstr: Storage adapter that allows ChatterBot to interact with
  Django storage backends.
class_docstr_tok: ["Storage","adapter","that","allows","ChatterBot","to","interact","with","Django","storage","backends","."]
docstr: Returns a list of statements in the database
  that match the parameters specified.
docstr_tok: ["Returns","a","list","of","statements","in","the","database","that","match","the","parameters","specified","."]
code: def filter(self, **kwargs):
      """
      Returns a list of statements in the database
      that match the parameters specified.
      """
      from django.db.models import Q
  
      Statement = self.get_model("statement")
  
      kwargs.pop("page_size", 1000)
      order_by = kwargs.pop("order_by", None)
      tags = kwargs.pop("tags", [])
      exclude_text = kwargs.pop("exclude_text", None)
      exclude_text_words = kwargs.pop("exclude_text_words", [])
      persona_not_startswith = kwargs.pop(
          "persona_not_startswith", None
      )
      search_text_contains = kwargs.pop("search_text_contains", None)
  
      # Convert a single sting into a list if only one tag is provided
      if type(tags) == str:
          tags = [tags]
  
      if tags:
          kwargs["tags__name__in"] = tags
  
      statements = Statement.objects.filter(**kwargs)
  
      if exclude_text:
          statements = statements.exclude(text__in=exclude_text)
  
      if exclude_text_words:
          or_query = [
              ~Q(text__icontains=word) for word in exclude_text_words
          ]
  
          statements = statements.filter(*or_query)
  
      if persona_not_startswith:
          statements = statements.exclude(persona__startswith="bot:")
  
      if search_text_contains:
          or_query = Q()
  
          for word in search_text_contains.split(" "):
              or_query |= Q(search_text__contains=word)
  
          statements = statements.filter(or_query)
  
      if order_by:
          statements = statements.order_by(*order_by)
  
      for statement in statements.iterator():
          yield statement
  
file_path: ChatterBot/chatterbot/storage/django_storage.py
imports: from chatterbot.storage import StorageAdapter
  from chatterbot import constants
label_desc: Use image node_id 5 for calling the DjangoStorageAdapter obj's underlying member method code with example usage: obj.filter() without return types