she*_*nga 11 python django html5
我正在尝试在Django的管理页面中实现HTML5颜色选择器.
这是我的模型:
#model.py
...
class Category(models.Model):
...
color = models.CharField(max_length=7)
Run Code Online (Sandbox Code Playgroud)
这是表格:
#form.py
from django.forms import ModelForm
from django.forms.widgets import TextInput
from .models import Category
class CategoryForm(ModelForm):
class Meta:
model = Category
fields = '__all__'
widgets = {
'color': TextInput(attrs={'type': 'color'}),
}
class CategoryAdminForm(ModelForm):
form = CategoryForm
Run Code Online (Sandbox Code Playgroud)
最后是管理员:
#admin.py
...
from .forms import CategoryAdminForm
...
class CategoryAdmin(admin.ModelAdmin):
form_class = CategoryAdminForm
filter_horizontal = ('questions',)
fieldsets = (
(None, {
'fields': (('name', 'letter'), 'questions', 'color')
}),
)
Run Code Online (Sandbox Code Playgroud)
但是,该字段的类型仍然是文本.如何在管理页面中将输入字段的类型更改为颜色?
she*_*nga 25
我在文档中找到了答案:
forms.py中的额外类不是必需的
#form.py
from django.forms import ModelForm
from django.forms.widgets import TextInput
from .models import Category
class CategoryForm(ModelForm):
class Meta:
model = Category
fields = '__all__'
widgets = {
'color': TextInput(attrs={'type': 'color'}),
}
Run Code Online (Sandbox Code Playgroud)
在管理员:
#admin.py
...
from .forms import CategoryForm
...
class CategoryAdmin(admin.ModelAdmin):
form = CategoryForm
filter_horizontal = ('questions',)
fieldsets = (
(None, {
'fields': (('name', 'letter'), 'questions', 'color')
}),
)
Run Code Online (Sandbox Code Playgroud)
小智 11
你可以使用这个库 https://github.com/jaredly/django-colorfield
安装:
pip install django-colorfieldcolorfield到您的INSTALLED_APPS./manage.py collectstatic用法:
在您的模型中,您可以像这样使用它:
from django.db import models
from colorfield.fields import ColorField
class MyModel(model.Model):
color = ColorField(default='#FF0000')
Run Code Online (Sandbox Code Playgroud)