# Platforms GUI navigation and options

Administrative GUI interface navigation and documentation of basic options and operations

# Advanced search syntax help

The Advanced search option can be activated whenever you see the 'Advanced search' checkbox bellow the search bar:

[![](https://docs.zequenze.com/uploads/images/gallery/2020-03/scaled-1680-/tOq6yFzLEjsHaUfJ-image-1585621221941.png)](https://docs.zequenze.com/uploads/images/gallery/2020-03/tOq6yFzLEjsHaUfJ-image-1585621221941.png)

When active will allow advanced search conditions and selection options according to the following documentation.

### Search conditions
A search condition is a basic search query building block. It always consists of 3 elements: ```field```, ```comparison operator``` and ```value```, placed exactly in this order from left to right.

Here's an example - looking for users with first name "John". In the example below ```first_name``` is a ```field```, ```=``` is a ```comparison operator``` and ```"John"``` is a ```value```:

```
first_name = "John"
```

Another example, looking for users who registered in 2017 or later:
```date_joined >= "2017-01-01"```
One more example, looking for super-users:
```
is_superuser = True
```
And one more - finding all users whose names are in a given list:
```
first_name in ("John", "Jack", "Jason")
```

### Multiple search conditions

<p>
  You can combine multiple search conditions together using the logical
  operators <code>and</code> (both conditions must be true) and
  <code>or</code> (at least one of the conditions must be true, no matter
  which one). Important - logical operators must be written in lowercase:
  <code>and</code> and <code>or</code> is correct, and <code>AND</code> or
  <code>OR</code> is incorrect and will cause an error.
</p>

<p>
  Example: looking for users with first name "John" <code>and</code>
  registered in 2017 or later. Please note that we have 2 search
  conditions here, joined with <code>and</code>:
</p>
<pre>first_name = "John" and date_joined >= "2017-01-01"</pre>
<p>
  One more example, looking for users who are either super-users
  <code>or</code> marked with "Staff" flag:
</p>
<pre>is_superuser = True or is_staff = True</pre>
<p>
  Logical operators can be quite powerful, as they let you to build
  complex search queries. If you're building a complex query there's an
  important tip to keep in mind: if your query contains both
  <code>and</code> and <code>or</code> operators, we strongly encourage
  you to use parenthesis to specify the precedence of operators. Here's
  an example to illustrate why this is important. Let's assume that you
  want to pull users who are either super-users <code>or</code> marked
  with Staff flag, <code>and</code> registered in 2017 or later. It
  might be tempting to write a query like this:
</p>
<pre>is_superuser = True or is_staff = True and date_joined > "2017-01-01"</pre>
<p>
  The problem with the query above is that it won't do what you expect,
  because the <code>and</code> operator is evaluated first. In fact it pulls
  users who are either super-users (no matter when they registered)
  <code>or</code> users who are both Staff <code>and</code> registered
  after 2017. This problem can be fixed with parentheses, just put them
  around the search conditions that must be evaluated first, like this:
</p>
<pre>(is_superuser = True or is_staff = True) and date_joined > "2017-01-01"</pre>
<p>
  Using parenthesis is recommended only when your query mixes both
  <code>and</code> and <code>or</code> operators. If your query contains
  multiple logical operators of only one kind (either <code>and</code>
  or <code>or</code>) you can safely omit parenthesis and it will work
  as expected.
</p>

### Fields

<p>
  In a search query, you should reference the current model's fields
  exactly as they're defined in Python code for that particular Django
  model. Search query input has an auto-completion feature that pops up
  automatically and suggests all available options. If you're not sure
  what the field name is, then pick one of the options displayed
  (example):
</p>

[![Screenshot-from-2020-03-30-17-45-55.png](https://docs.zequenze.com/uploads/images/gallery/2020-03/scaled-1680-/jYkmoEblfaJz0diz-Screenshot-from-2020-03-30-17-45-55.png)](https://docs.zequenze.com/uploads/images/gallery/2020-03/jYkmoEblfaJz0diz-Screenshot-from-2020-03-30-17-45-55.png)

<p>
  In most cases, internal model fields look similar to what you see
  in Django admin interface, just in lowercase and with <code>_</code>
  instead of spaces. For example, in the standard Users admin interface,
  the internal <code>first_name</code> field is displayed as
  <code>First name</code>, <code>email</code> field is displayed as
  <code>Email address</code> and so on. However there could be exceptions
  to this, if developers have defined custom display names that look
  very different from their internal representation. In such cases it
  might be a good idea to ask developers to override this help template
  and provide an "internal name -> display name" fields mapping right
  here.
</p>

<p>
  Note that some fields that you see in the admin interface may not be
  searchable. This includes computed fields, i.e. fields which are not
  stored in the database as a plain value, but rather calculated from
  other values in the code.
</p>

### Related models

<p>
  Advanced search allows you to search by related models as well (it
  automatically converts relations to database joins under the hood). Use the
  <code>.</code> dot separator to designate related models and their
  fields. For example:
</p>

<pre>groups.name in ("Marketing", "Support")</pre>

<p>
  See the <code>.</code> in the example above? It means that
  <code>groups</code> is a related model and <code>name</code> is a field
  of that model. As usual, DjangoQL auto-completion provides suggestions
  for all available related models and their fields. For complex data
  structures you can use multiple levels of relation, i.e. specifying a
  related model, then its related model, and so on.
</p>

<p>
  In most cases the search condition with a related model must specify the
  exact field of that model, but not a related model itself. For example,
  <code>groups in ("Marketing", "Support")</code> won't work, because
  <code>groups</code> is a model and not a field. Models can have many
  fields, and the server doesn't know against which field you would like
  to perform a comparison. However there's one notable exception to
  this - when you'd like to find records that are linked (or not linked)
  to any related models of that kind. In such a case, you should compare
  the related model to a special <code>None</code> value, like this:
</p>

<pre>groups = None</pre>

<p>
  The example above would search for users that don't belong to any
  groups. If you'd like to find all users that belong to at least any
  group instead, use <code>!= None</code>:
</p>

<pre>groups != None</pre>

### Comparison operators

<table>
  <thead>
    <tr>
      <th>Operator</th>
      <th>Meaning</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>=</td>
      <td>equals</td>
      <td>first_name = "John"</td>
    </tr>
    <tr>
      <td>!=</td>
      <td>does not equal</td>
      <td>id != 42</td>
    </tr>
    <tr>
      <td>~</td>
      <td>contains a substring</td>
      <td>email ~ "@gmail.com"</td>
    </tr>
    <tr>
      <td>!~</td>
      <td>does not contain a substring</td>
      <td>username !~ "test"</td>
    </tr>
    <tr>
      <td>&gt;</td>
      <td>greater</td>
      <td>date_joined > "2017-02-28"</td>
    </tr>
    <tr>
      <td>&gt;=</td>
      <td>greater or equal</td>
      <td>id &gt;= 9000</td>
    </tr>
    <tr>
      <td>&lt;</td>
      <td>less</td>
      <td>id &lt; 9000</td>
    </tr>
    <tr>
      <td>&lt;=</td>
      <td>less or equal</td>
      <td>last_login &lt;= "2017-02-28 14:53"</td>
    </tr>
    <tr>
      <td>in</td>
      <td>value is in the list</td>
      <td>first_name in ("John", "Jack", "Jason")</td>
    </tr>
    <tr>
      <td>not in</td>
      <td>value is not in the list</td>
      <td>id not in (42, 9000)</td>
    </tr>
    <tr>
      <td>startswith</td>
      <td>value starts with the provided argument</td>
      <td>name startswith "te"</td>
    </tr>
    <tr>
      <td>endswith</td>
      <td>value ends with the provided argument</td>
      <td>name endswith "st"</td>
    </tr>
  </tbody>
</table>

<p>Notes:</p>
<ol>
  <li>
    <code>~</code>, <code>!~</code>, <code>startswith</code> and <code>endswith</code> operators can be applied only to
    string fields;
  </li>
  <li>
    <code>True</code>, <code>False</code> and <code>None</code> values can
    be combined only with <code>=</code> and <code>!=</code>;
  </li>
  <li>
    <code>in</code> and <code>not in</code> operators must be written in
    lowercase. <code>IN</code> or <code>NOT IN</code> is incorrect and
    will cause an error.
  </li>
</ol>

### Logical operators

Standars `and` and `or` logical operator can be used on search query, ie:

```
name = "test" and description = "test objects"
```
```
name = "test" or name = "example"
```

### Values

<table>
  <thead>
    <tr>
      <th>Type</th>
      <th>Examples</th>
      <th>Comments</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>string</td>
      <td nowrap><code>"this is a string"</code></td>
      <td>
        Strings must be enclosed in double quotes, like
        <code>"this"</code>. If your string contains double quote
        symbols in it, you should escape them with a backslash,
        like this: <code>"this is a string with \"quoted\" text"</code>.
      </td>
    </tr>
    <tr>
      <td>int</td>
      <td nowrap><code>42</code>, <code>0</code>, <code>-9000</code></td>
      <td>
        Integer numbers are just digits with optional unary minus. If
        you're typing big numbers please don't use thousand separators,
        DjangoQL doesn't understand them.
      </td>
    </tr>
    <tr>
      <td>float</td>
      <td nowrap>
        <code>3.14</code>, <code>-0.5</code>, <code>5.972e24</code>
      </td>
      <td>
        Floating point numbers look like integer numbers with optional
        fractional part separated with dot. You can also use
        <code>e</code> notation to specify power of ten. For example,
        <code>5.972e24</code> means <code>5.972 * 10<sup>24</sup></code>.
      </td>
    </tr>
    <tr>
      <td>bool</td>
      <td nowrap>
        <code>True</code>, <code>False</code>
      </td>
      <td>
        Boolean is a special type that accepts only two values:
        <code>True</code> or <code>False</code>. These values are
        case-sensitive, you should write <code>True</code> or
        <code>False</code> exactly like this, with the first letter in
        uppercase and others in lowercase, without quotes.
      </td>
    </tr>
    <tr>
      <td>date</td>
      <td nowrap>
        <code>"2017-02-28"</code>
      </td>
      <td>
        Dates are represented as strings in <code>"YYYY-MM-DD"</code>
        format.
      </td>
    </tr>
    <tr>
      <td>datetime</td>
      <td nowrap>
        <code>"2017-02-28 14:53"</code><br>
        <code>"2017-02-28 14:53:07"</code>
      </td>
      <td>
        Date and time can be represented as a string in
        <code>"YYYY-MM-DD HH:MM"</code> format, or optionally with seconds
        in  <code>"YYYY-MM-DD HH:MM:SS"</code> format (24-hour clock).
        Please note that comparisons with date and time are performed in
        the server's timezone, which is usually UTC.
      </td>
    </tr>
    <tr>
      <td>null</td>
      <td nowrap>
        <code>None</code>
      </td>
      <td>
        This is a special value that represents an absence of any value:
        <code>None</code>. It should be written exactly like this, with
        the first letter in uppercase and others in lowercase, without
        quotes. Use it when some field in the database is
        nullable (i.e. can contain NULL in SQL terms) and you'd like to
        search for records which either have no value
        (<code>some_field = None</code>) or have some value
        (<code>some_field != None</code>).
      </td>
    </tr>
  </tbody>
</table>

# Exporting and Importing data

There are two ways for exporting data from and to zequenze platforms:
- Export/ Import with dependencies
- Export/ Import with no dependencies

The main difference between both is that the former will export data with all its dependencies, for example, if you want to export a Page object, it will be exported with its *connection_profile, main_template, registration_service, campaign, etc.*

The latter one will only import only the object you're trying to export, so to import the exported object on another platform it is a requirement to have all the dependencies already created

Below you can find some examples:

#### Export with no dependencies:
First, you must select the elements you want to export

[![no-dep-2.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/62ca5BaweSz1alOc-no-dep-2.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/62ca5BaweSz1alOc-no-dep-2.png)

Once selected, click on the **Export** button located on the top right corner of the model principal view
[![no-dep-1.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/yTwXQZ7YFs62At6G-no-dep-1.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/yTwXQZ7YFs62At6G-no-dep-1.png)

An export screen will be shown where you can select the type of file to be exported, select the desired format and hit the **Proceed** button

[![no-dep-4.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/7GEvYGuremTj2OiD-no-dep-4.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/7GEvYGuremTj2OiD-no-dep-4.png)

Finally, you'll get your file downloaded

[![no-dep-7.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/AfOX04tGWNpgu6Yk-no-dep-7.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/AfOX04tGWNpgu6Yk-no-dep-7.png)

#### Import with no dependencies:

To import with no dependencies it will be required to have a file generated by the export with no dependencies process, with the file in hand click on the **Import** button located on the top right corner of the model principal view:

[![no-dep-1.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/yTwXQZ7YFs62At6G-no-dep-1.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/yTwXQZ7YFs62At6G-no-dep-1.png)

A form screen will appear where you have to select the file to be uploaded as well as its format, then hot the **Proceed** button:

[![no-dep-6.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/GpcDTR3MyZUKKIeF-no-dep-6.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/GpcDTR3MyZUKKIeF-no-dep-6.png)

A confirmation screen will be shown, you may double-check the data to be uploaded, once checked hit the **Confirm import** button

[![no-dep-8.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/XqGYrQPVQwl5ryEE-no-dep-8.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/XqGYrQPVQwl5ryEE-no-dep-8.png)

if everything goes well, you'll see a success message on the bottom right corner of the model principal view.

#### Export with dependencies:
When a model can be exported with dependencies, **Export with dependencies** button will be available under the search bar

[![export-button.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/GfZLmESkxtEIXL7B-export-button.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/GfZLmESkxtEIXL7B-export-button.png)

Sometimes the **Export with dependencies** button will inside the action menu under the search bar

[![export-4.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/wRi9m3zcwEbfCnZw-export-4.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/wRi9m3zcwEbfCnZw-export-4.png)

To start the process you can easily select the objects you want to export and click **Export with dependencies** button, for this example will be used a Page object

[![export-3.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/E98QtYlp36BbXcvU-export-3.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/E98QtYlp36BbXcvU-export-3.png)

Finally, you will see a *.json* file downloaded into your computer

[![export--2.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/ir5ZNi32irEJn0O1-export--2.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/ir5ZNi32irEJn0O1-export--2.png)

It's important to notice that this JSON file will be used when we want to import with dependencies

#### Import with dependencies
To begin the process of import with dependencies you should click on **Import** button located in the top right corner of the model principal view
[![import-1.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/Qp5pefQ2L9U7NF2D-import-1.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/Qp5pefQ2L9U7NF2D-import-1.png)

You will see the **Import with dependencies** form

[![import-2.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/OmS3v6dSlc7ZhD1r-import-2.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/OmS3v6dSlc7ZhD1r-import-2.png)

Here you must select the JSON file and the organization on which you want the object(s) to be created, 
the **Update existing** checkbox is used when the objects exist already on the organization you're trying to import.
When checked the platform will try to update the existing objects and if those don't exist they will be created.

**Note:** make sure the *.json* file is one generated by an export with dependencies process 

Once selected the *.json* file, the organization and either checked or not updating existing, you must click on **Proceed** button

[![import-3.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/j4MBvmLbW0AtLLk9-import-3.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/j4MBvmLbW0AtLLk9-import-3.png)

After the process completed successfully you will see a success message on the bottom right corner on the model principal view

[![import-4.png](https://docs.zequenze.com/uploads/images/gallery/2020-07/scaled-1680-/AWpHzyFdhe8MeRqq-import-4.png)](https://docs.zequenze.com/uploads/images/gallery/2020-07/AWpHzyFdhe8MeRqq-import-4.png)

# Hidden Columns and Linked Filters

### <span style="color: rgb(0, 0, 0);"><span class="notion-enable-hover" data-token-index="0">Customizing Your Data Table View with Hidden Columns</span></span>

#### <span style="color: rgb(0, 0, 0);"><span class="notion-enable-hover" data-token-index="0">Accessing the Column Visibility Menu</span></span>

<span style="color: rgb(0, 0, 0);"><span class="notion-enable-hover" data-token-index="0"></span></span>

[![image.png](https://docs.zequenze.com/uploads/images/gallery/2024-02/scaled-1680-/Gi29kTHP3BvPai6p-image.png)](https://docs.zequenze.com/uploads/images/gallery/2024-02/Gi29kTHP3BvPai6p-image.png)Near your data table, look for a this grey button with the eye icon. This button is your access point to customize the visible columns in your table. Clicking on this button reveals a dropdown menu with a list of options.

#### How to Show or Hide Columns

[![image.png](https://docs.zequenze.com/uploads/images/gallery/2024-02/scaled-1680-/B9tTSLVi75x65Lid-image.png)](https://docs.zequenze.com/uploads/images/gallery/2024-02/B9tTSLVi75x65Lid-image.png)

In the dropdown, you’ll find a list of column names, each with a corresponding checkbox. These checkboxes allow you to tailor your table view:

- **To hide a column**: Uncheck the box next to the column name, and watch it disappear from your table.
- **To show a column**: Check the box beside the column name you want to display, and it will reappear in the table.

Your adjustments are applied instantly, reshaping your table as per your choices.

#### Keeping Track with the Bubble Indicator

[![image.png](https://docs.zequenze.com/uploads/images/gallery/2024-02/scaled-1680-/o1MLkUPn97o956df-image.png)](https://docs.zequenze.com/uploads/images/gallery/2024-02/o1MLkUPn97o956df-image.png)

A small bubble indicator next to the visibility button helps you keep track of your customizations. It shows the number of columns you have chosen to hide, providing a quick reference at a glance.

### <span class="notion-enable-hover" data-token-index="0">Managing Data Effectively with Linked Filters</span>

#### Understanding the Impact of Linked Filters

[![image.png](https://docs.zequenze.com/uploads/images/gallery/2024-02/scaled-1680-/L07Zp0gUUrpfHp4j-image.png)](https://docs.zequenze.com/uploads/images/gallery/2024-02/L07Zp0gUUrpfHp4j-image.png)

Some columns in your table are linked to specific filters. When you hide these columns, the corresponding filters are also hidden to maintain relevancy in your data view.

#### Spotting Active Linked Filters

[![image.png](https://docs.zequenze.com/uploads/images/gallery/2024-02/scaled-1680-/IUh3RboVPAhjaeN4-image.png)](https://docs.zequenze.com/uploads/images/gallery/2024-02/IUh3RboVPAhjaeN4-image.png)

If you choose to hide a column linked to active filters, a special icon (often a filter icon) appears next to its name in the dropdown. This icon alerts you that hiding this column will also impact the active filters.

[![image.png](https://docs.zequenze.com/uploads/images/gallery/2024-02/scaled-1680-/Br3xKPIgp9FLzU0t-image.png)](https://docs.zequenze.com/uploads/images/gallery/2024-02/Br3xKPIgp9FLzU0t-image.png)

The solid icon denotes that the filter is currently displayed.  
The empty icon signifies that the filter is concealed.  
The green variations indicate that these filters, whether active or hidden, are currently affecting the data visible in your resulting table.

#### <span class="notion-enable-hover" data-token-index="0">Your Preferences, Remembered</span>

Your customized settings are saved in your browser, ensuring that you find the table just as you customized it during your last visit.

#### <span class="notion-enable-hover" data-token-index="0">Resetting to the Default View</span>

[![image.png](https://docs.zequenze.com/uploads/images/gallery/2024-02/scaled-1680-/1rC9dn9ONkQwURiY-image.png)](https://docs.zequenze.com/uploads/images/gallery/2024-02/1rC9dn9ONkQwURiY-image.png)

For returning to the standard table view, a 'Reset' button in the dropdown menu allows you to revert to the default column visibility settings.