def METHOD_NAME(column=None, value=None, term=""):
    flt = None
    search_fields = {
        "journal": [
            "title",
            "title_iso",
            "short_title",
            "acronym",
            "print_issn",
            "eletronic_issn",
        ],
        "issue": ["label"],
        "use_licenses": ["license_code", "reference_url", "disclaimer"],
    }
    if isinstance(column, ReferenceField):
        criteria = None
        reference_values = None
        for field in search_fields[column.name]:
            flt = {"%s__%s" % (field, term): value}
            q = Q(**flt)
            if criteria is None:
                criteria = q
            elif term in ["ne", "not__contains", "nin"]:
                criteria &= q
            else:
                criteria |= q
        if isinstance(column.document_type_obj(), Journal):
            reference_values = Journal.objects.filter(criteria)
        if isinstance(column.document_type_obj(), Issue):
            reference_values = Issue.objects.filter(criteria)
        flt = {"%s__in" % column.name: reference_values}
    elif isinstance(column, EmbeddedDocumentField):
        criteria = None
        for field in search_fields[column.name]:
            flt = {"%s__%s__%s" % (column.name, field, term): value}
            q = Q(**flt)
            if criteria is None:
                criteria = q
            elif term in ["ne", "not__contains", "nin"]:
                criteria &= q
            else:
                criteria |= q
        return criteria
    elif isinstance(column, ListField) and isinstance(column.field, StringField):
        flt = {"%s__%s" % (column.name, term): value if value else []}
    else:
        flt = {"%s__%s" % (column.name, term): value}
    return Q(**flt)