免责声明:我是Python和Django的初学者,但有Drupal编程经验.

如何覆盖以下内容的默认小部件:

#models.py
class Project(models.Model):
color_mode = models.CharField(max_length=50, null=True, blank=True, help_text='colors - e.g black and white, grayscale')

在我的表单中使用 Select 框吗?以下内容可以吗?还是我漏掉了什么?

#forms.py
from django.forms import ModelForm, Select
class ProjectForm(ModelForm):
    class Meta:
        model = Project
        fields = ('title', 'date_created', 'path', 'color_mode')
        colors = (
                   ('mixed', 'Mixed (i.e. some color or grayscale, some black and white)'),
                   ('color_grayscale', 'Color / Grayscale'),
                   ('black_and_white', 'Black and White only'),
                   )
        widgets = {'color_mode': Select(choices=colors)}

读完https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-default-field-types-or-widgets之后,我不知所措,因为示例中只讨论了TextArea,而小部件讨论似乎排除了ModelForm.

谢谢!

推荐答案

如果您通常想要覆盖表单字段的小部件,最好的方法是设置ModelForm Meta类的widgets属性:

要为字段指定自定义小部件,请使用内部Meta类的小部件属性.这应该是将字段名映射到小部件类或实例的字典.

例如,如果您希望Author的Name属性的a Charfield用<textarea>而不是其默认的<input type="text">表示,则可以覆盖该字段的构件:

from django.forms import ModelForm, Textarea
from myapp.models import Author

class AuthorForm(ModelForm):
    class Meta:
        model = Author
        fields = ('name', 'title', 'birth_date')
        widgets = {
            'name': Textarea(attrs={'cols': 80, 'rows': 20}),
        }

小部件字典接受任何一个小部件实例(例如,Textarea(.))或类(例如,Textarea).

https://docs.djangoproject.com/en/3.2/topics/forms/modelforms/#overriding-the-default-fields

Django相关问答推荐

django命令中的no_color不起作用

Django modelform在包含在另一个模板中时不呈现

将两个视图重定向到具有不同 url id Django 的一个模板的正确方法

dj_rest_auth 中的 PyTest 警告- RemovedInDjango40Warning: django.conf.urls.url() 已弃用,取而代之的是 django.urls.re_path()

Django Inline Tabular admin:删除一个不工作的对象

如何在没有此前缀的情况下修复此 django 路径?

Django 和 HTML 无法从指定时间开始视频

防止 django 将_id附加到外键字段

Django rest框架覆盖ViewSet中的page_size

django - 表单没有错误,但 form.is_valid() 没有验证

如何在 django 中生成 url

Django 管理命令参数

Django rest-auth allauth 注册,带有邮箱、名字和姓氏,没有用户名

Django 模板列表的第一个元素

使用 Python / Django 的 Google API 示例的 Oauth

Django manage.py:在其依赖之前应用迁移

如何获取经过身份验证的用户列表?

在 django 中获取空查询集的类名

如何使用 ModelSerializer 显示所有模型字段?

Django 用户配置文件