Skip to content

Creating and Managing Views

This guide covers how to create and manage views in Teable tables.

Creating Views

Basic View Creation

from teable import TeableClient, TeableConfig

# Initialize the client
client = TeableClient(TeableConfig(
    api_url="https://your-teable-instance.com/api",
    api_key="your-api-key"
))

# Create a grid view
view = client.views.create(
    table_id="table_id",
    name="My Grid View",
    type="grid"
)

print(f"Created view: {view.view_id}")

View Configuration

Filtering Records

from teable import FilterOperator

# Create view with filters
view = client.views.create(
    table_id="table_id",
    name="Active Projects",
    type="grid",
    filter={
        "operator": "and",
        "conditions": [
            {
                "field": "Status",
                "operator": FilterOperator.EQUALS,
                "value": "Active"
            },
            {
                "field": "Due Date",
                "operator": FilterOperator.GREATER_THAN,
                "value": "2023-01-01"
            }
        ]
    }
)

Sorting Records

from teable import SortDirection

# Create view with sorting
view = client.views.create(
    table_id="table_id",
    name="Projects by Priority",
    type="grid",
    sort=[
        {
            "field": "Priority",
            "direction": SortDirection.DESCENDING
        },
        {
            "field": "Due Date",
            "direction": SortDirection.ASCENDING
        }
    ]
)

Field Visibility

# Create view with specific visible fields
view = client.views.create(
    table_id="table_id",
    name="Simple View",
    type="grid",
    fields={
        "visible": ["Name", "Status", "Due Date"],
        "hidden": ["Internal Notes", "Created By"]
    }
)

Managing Views

Getting Views

# Get table
table = client.tables.get("table_id")

# Get all views in a table
views = table.views

Updating Views

from teable import FilterOperator

# Update view configuration
view = client.views.update(
    view_id="view_id",
    name="Updated View Name",
    filter={
        "operator": "and",
        "conditions": [
            {
                "field": "Status",
                "operator": FilterOperator.IN,
                "value": ["Active", "In Progress"]
            }
        ]
    }
)

Deleting Views

# Delete a view
client.views.delete(view_id="view_id")

Working with View Data

Getting Records from a View

# Get records using view's configuration
records = client.records.get_records(
    table_id="table_id",
    view_id="view_id"
)

Pagination in Views

# Get paginated records from a view
records = client.records.get_records(
    table_id="table_id",
    view_id="view_id",
    take=50,    # Number of records to return
    skip=100    # Number of records to skip
)

Best Practices

  1. View Organization
  2. Use clear, descriptive names
  3. Group related views together
  4. Consider user permissions
  5. Document view purposes

  6. Performance

  7. Optimize filters for performance
  8. Use appropriate pagination
  9. Consider data volume
  10. Monitor view usage

  11. User Experience

  12. Configure meaningful defaults
  13. Provide clear field visibility
  14. Consider sorting and filtering
  15. Keep views organized

  16. Maintenance

  17. Regular view audits
  18. Clean up unused views
  19. Update view configurations
  20. Monitor view usage

Next Steps