如何在 Django ModelForm 中自动聚焦 Charfield
How to autofocus a Charfield in a Django ModelForm
在我的 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 class(在 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 <b>forms</b>
from .models import ListModel
class ListForm(ModelForm):
# forms ↓
task = forms.CharField(
max_length=255,
# forms ↓
widget=<b>forms.</b>TextInput(attrs={'autofocus': True})
)
class Meta:
model = ListModel
fields = ['task', 'status']
在我的 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 class(在 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 <b>forms</b>
from .models import ListModel
class ListForm(ModelForm):
# forms ↓
task = forms.CharField(
max_length=255,
# forms ↓
widget=<b>forms.</b>TextInput(attrs={'autofocus': True})
)
class Meta:
model = ListModel
fields = ['task', 'status']