使用html5输入type ='color'

spe*_*ndo 5 python django html5 django-models

我有一个模特

# models.py
from django.db import models

class Foo(models.Model):
    # ...
    color = models.CharField(max_length=7, null=True)
Run Code Online (Sandbox Code Playgroud)

color应该存储六角颜色.而不是input type="text"我想使用html5输入类型"颜色".

我通过设置以下表单对象尝试了这个:

# forms.py
from django.forms import ModelForm, CharField

class FooForm(ModelForm):
    class Meta:
        model = Foo
        widgets = {
                   'color': CharField(attrs={'type': 'color'}),
                   }
Run Code Online (Sandbox Code Playgroud)

但是,这给了我以下错误消息

init()得到了一个意外的关键字参数'attrs'

我做错了什么,我该怎么做?

spe*_*ndo 7

自己解决了.它几乎像我预期的那样工作:

# models.py
from django.db import models

class Foo(models.Model):
    # ...
    color = models.CharField(max_length=7, null=True)

# forms.py
from django.forms import ModelForm
from django.forms.widgets import TextInput

class FooForm(ModelForm):
    class Meta:
        model = Foo
        widgets = {
                   'color': TextInput(attrs={'type': 'color'}),
                   }
Run Code Online (Sandbox Code Playgroud)

对我来说棘手的部分是不要忘记在视图中正确设置:

# views.py
from my_app.models import Foo
from my_app.forms import FooForm

class FooCreate(CreateView):
    model = Foo
    form_class = FooForm
Run Code Online (Sandbox Code Playgroud)

感谢aamir-adnan - 他指出我必须使用TextInput而不是CharField.