Django - 在 form.py Meta class 中添加小部件选项?

Django - add widget option in form.py Meta class?

models.py

from django.db import models

class user(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    email = models.EmailField(max_length=100, unique=True)

forms.py

from django import forms
from second_app.models import user

class NewUserForm(forms.ModelForm):

    class Meta:
        model = user
        fields = '__all__'

在不从模型继承的正常 forms.py 中,您可以使用 field = forms.CharField(widget=forms.HiddenInput) 指定如何向用户显示输入字段。当我的 forms.py 继承 models.py 中定义的 class 时,如何做到这一点?

您可以为此元的 widgets 选项使用:

from django import forms
from second_app.models import user

class NewUserForm(forms.ModelForm):

    class Meta:
        model = user
        fields = '__all__'
        widgets = {
            'field_name': forms.HiddenInput(),
        }

您可以通过 __init__ 方法修改小部件:

def __init__(self, *args, **kwargs):
    super(NewUserForm, self).__init__(*args, *kwargs)
    self.fields['fieldname'].widget = forms.HiddenInput()

您可以更改该字段的任何内容.. 例如。 required、choices 和许多其他您可能希望在显示表单时以不同方式决定的事情。您还可以在此处从表单中删除字段,或者添加您可能只想有条件地包含的字段。例如:

del self.fields['fieldname']
if some_condition:
    field['new_fieldname'] = forms.CharField()