微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Django ModelForm 中自动聚焦 Charfield

如何解决如何在 Django ModelForm 中自动聚焦 Charfield

在我的 django 应用程序中,我想在页面加载时将焦点设置为第一个 CharField(任务)。

我的models.py

from django.db import models

class ListModel(models.Model):
    task = models.CharField(max_length=255)
    status = models.BooleanField(default=False)

    def __str__(self):
        return f"{self.task} : {str(self.status)}"

forms.py

from django.forms import ModelForm
from .models import ListModel

class ListForm(ModelForm):
    class Meta:
        model = ListModel
        fields = ["task","status"]

我尝试在我的 CharField(在 models.py 中)添加以下小部件:

task = models.CharField(max_length=255,widget=models.TextInput(attrs={'autofocus': True})

但它给出了一个 AttributeError: module 'django.db.models' has no attribute 'TextInput'

我还尝试将以下内容添加ListForm 类(在 forms.py 中)

def __init__(self):
    self.fields['task'].widget.attrs.update(autofocus = 'autofocus')

虽然我没有收到任何错误,但是当我加载我的页面时,焦点也没有设置到任务 CharField 上。我可以怎样为我的 CharField 添加自动对焦?

解决方法

您混淆了 model 字段(用于在数据库中存储数据)和 form 字段,它们用于获取、验证和清理用户数据已进入。

您因此与:

from django.forms import ModelForm
from django import forms
from .models import ListModel

class ListForm(ModelForm):
    #  forms ↓
    task = forms.CharField(
        max_length=255,#  forms ↓
        widget=forms.TextInput(attrs={'autofocus': True})
    )

    class Meta:
        model = ListModel
        fields = ['task','status']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。