Что бы в админке был виджет указания цвета. Рецепт найден где-то на просторах сети.
# model.py
class Pages(CommonInfo):
...
color = fields.ColorField('Цвет обложки', default='#FF0000')
def colortile(self):
if self.color:
return format_html('<div style="background-color: {0}; \
height: 100px; width: 100px"></div>', self.color)
return 'пусто'
В fields.py
from django.db import models
from django.core import validators
class ColorField(models.CharField):
""" Поле для хранения HTML-кода цвета."""
def __init__(self, *args, **kwargs):
kwargs.setdefault('max_length', 7)
super().__init__(*args, **kwargs)
self.validators.append(validators.RegexValidator(r'#[a-f\d]{6}'))
В админке следующее
class PagesAdmin(admin.ModelAdmin):
...
list_display = ('title', 'thumb', 'colortile', 'status')
formfield_overrides = {
fields.ColorField: {'widget': forms.TextInput(attrs={'type': 'color', \
'style': 'height: 100px; width: 100px;'})}
}