Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用html5输入类型=';颜色';_Python_Django_Html_Django Models - Fatal编程技术网

Python 使用html5输入类型=';颜色';

Python 使用html5输入类型=';颜色';,python,django,html,django-models,Python,Django,Html,Django Models,我有一个模型 # models.py from django.db import models class Foo(models.Model): # ... color = models.CharField(max_length=7, null=True) color应存储十六进制颜色。我想使用的不是input type=“text” 我通过设置以下表单对象来尝试此操作: # forms.py from django.forms import ModelForm, C

我有一个模型

# models.py
from django.db import models
    
class Foo(models.Model):
    # ...
    color = models.CharField(max_length=7, null=True)
color
应存储十六进制颜色。我想使用的不是
input type=“text”

我通过设置以下表单对象来尝试此操作:

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

class FooForm(ModelForm):
    class Meta:
        model = Foo
        widgets = {
                   'color': CharField(attrs={'type': 'color'}),
                   }
但是,这给了我以下错误消息

init()获得意外的关键字参数“attrs”


我做错了什么?我该如何做才对?

如果您只需要更新
类型
属性,您需要更新小部件属性,它是用于:


我自己解决了。它的工作原理与我预期的差不多:

# 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

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

attrs
不是字段的参数,而是小部件的参数。好的,但他们不是这样做的吗:?还是我弄错了什么?谢谢!使用
TextInput
而不是
CharField
至少不会给我带来任何错误(我仍然不完全理解为什么
CharField
是不可能的)。文档还说“还可以指定'type'属性以利用新的HTML5输入类型。为此,在创建小部件时使用Widget.attrs参数”()。我不知道你是如何使用TextInput小部件的。但是,如果您按照我的解决方案进行操作,它应该可以工作,请参见我正在执行的
widget.attrs.update
,这实际上是在更新
TextInput
CharField
小部件的attr,该小部件的
color
# views.py
from my_app.models import Foo
from my_app.forms import FooForm

class FooCreate(CreateView):
    model = Foo
    form_class = FooForm