Fields API Reference
This page documents the model and form fields provided by Django RemixIcon.
Django model fields for RemixIcon integration.
- django_remix_icon.fields.get_all_icon_names()[source]
Get a flat list of all icon names with ‘ri-’ prefix.
- class django_remix_icon.fields.IconFormField(*args, **kwargs)[source]
Bases:
ChoiceFieldForm field for selecting RemixIcons with autocomplete functionality.
- class django_remix_icon.fields.IconField(*args, **kwargs)[source]
Bases:
CharFieldA Django model field for storing RemixIcon names.
This field stores the icon name as a string and provides a custom form field with autocomplete functionality in Django admin.
- Usage:
- class MyModel(models.Model):
icon = IconField()
- description = 'A field for storing RemixIcon names'
IconField
- class django_remix_icon.fields.IconField(*args, **kwargs)[source]
Bases:
CharFieldA Django model field for storing RemixIcon names.
This field stores the icon name as a string and provides a custom form field with autocomplete functionality in Django admin.
- Usage:
- class MyModel(models.Model):
icon = IconField()
Description:
A Django model field for storing RemixIcon names. This field extends Django’s
CharFieldand provides automatic validation and a custom admin widget.Parameters:
All parameters from Django’s
CharFieldare supported, plus:max_length(int, default=100): Maximum length for the icon nameblank(bool, default=True): Allow empty values in formsnull(bool, default=True): Allow NULL values in database
Usage:
from django.db import models from django_remix_icon.fields import IconField class MyModel(models.Model): name = models.CharField(max_length=100) icon = IconField() optional_icon = IconField(blank=True, null=True)
- description = 'A field for storing RemixIcon names'
IconFormField
- class django_remix_icon.fields.IconFormField(*args, **kwargs)[source]
Bases:
ChoiceFieldForm field for selecting RemixIcons with autocomplete functionality.
Description:
A Django form field for selecting RemixIcons with autocomplete functionality. This field extends Django’s
ChoiceFieldand is automatically used byIconField.Parameters:
All parameters from Django’s
ChoiceFieldare supported:choices(list): Automatically populated with RemixIcon choiceswidget(Widget): Defaults toIconSelectWidget
Usage:
from django import forms from django_remix_icon.fields import IconFormField class MyForm(forms.Form): icon = IconFormField()
Examples
Basic Model Usage
from django.db import models
from django_remix_icon.fields import IconField
class Category(models.Model):
name = models.CharField(max_length=100)
icon = IconField()
description = models.TextField(blank=True)
def __str__(self):
return self.name
Required Icon Field
class MenuItem(models.Model):
title = models.CharField(max_length=100)
icon = IconField(blank=False, null=False) # Required field
Optional Icon Field
class Page(models.Model):
title = models.CharField(max_length=200)
icon = IconField(blank=True, null=True) # Optional field
Icon Field with Help Text
class Service(models.Model):
name = models.CharField(max_length=100)
icon = IconField(
help_text="Choose an icon that represents this service"
)
Icon Field with Default Value
class Status(models.Model):
name = models.CharField(max_length=50)
icon = IconField(default='ri-circle-line')
Custom Form Usage
from django import forms
from django_remix_icon.fields import IconFormField
class CustomForm(forms.Form):
title = forms.CharField(max_length=100)
icon = IconFormField(required=False)
description = forms.TextField()
class ModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['name', 'icon', 'description']
# IconField automatically uses IconFormField
Field Validation
The IconField automatically validates that the stored value is a valid RemixIcon name:
from django.core.exceptions import ValidationError
from myapp.models import Category
# Valid usage
category = Category(name="Home", icon="ri-home-line")
category.full_clean() # No error
# Invalid usage
category = Category(name="Invalid", icon="invalid-icon-name")
try:
category.full_clean()
except ValidationError as e:
print(e) # Will show validation error
Database Storage
Icon names are stored as strings in the database:
-- Example database schema
CREATE TABLE myapp_category (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
icon VARCHAR(100) -- RemixIcon name stored here
);
-- Example data
INSERT INTO myapp_category (name, icon) VALUES
('Home', 'ri-home-line'),
('Settings', 'ri-settings-line'),
('User Profile', 'ri-user-line');
Querying Icon Fields
You can query models with icon fields like any other CharField:
# Filter by specific icon
home_items = Category.objects.filter(icon='ri-home-line')
# Filter by icon pattern
user_items = Category.objects.filter(icon__startswith='ri-user')
# Exclude items without icons
items_with_icons = Category.objects.exclude(icon__isnull=True)
items_with_icons = Category.objects.exclude(icon='')
# Search in icon names
heart_items = Category.objects.filter(icon__icontains='heart')
Migration Considerations
When adding IconField to existing models:
# Generated migration
from django.db import migrations
from django_remix_icon.fields import IconField
class Migration(migrations.Migration):
dependencies = [
('myapp', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='category',
name='icon',
field=IconField(blank=True, null=True),
),
]
Setting default values for existing records:
# Data migration to set default icons
from django.db import migrations
def set_default_icons(apps, schema_editor):
Category = apps.get_model('myapp', 'Category')
for category in Category.objects.all():
if not category.icon:
category.icon = 'ri-bookmark-line' # Default icon
category.save()
class Migration(migrations.Migration):
dependencies = [
('myapp', '0002_add_icon_field'),
]
operations = [
migrations.RunPython(set_default_icons),
]