我有一个模特
# models.py
from django.db import models
class Foo(models.Model):
# ...
color = models.CharField(max_length=7, null=True)
color
应存储十六进制颜色。而不是input type="text"
我想使用html5 input type "color"。
我通过设置以下表单对象来尝试这个:
# forms.py
from django.forms import ModelForm, CharField
class FooForm(ModelForm):
class Meta:
model = Foo
widgets = {
'color': CharField(attrs={'type': 'color'}),
}
但是,这会给我以下错误消息
init ()获得了意想不到的关键字参数' attrs'
我做错了什么,我该怎么做?
答案 0 :(得分:6)
自己解决了。它几乎像我预期的那样工作:
# 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'}),
}
对我来说棘手的部分并不是忘记在视图中正确设置:
# views.py
from my_app.models import Foo
from my_app.forms import FooForm
class FooCreate(CreateView):
model = Foo
form_class = FooForm
感谢aamir-adnan - 他指出我必须使用TextInput而不是CharField。
答案 1 :(得分:1)