Прочитав, как создавать собственные виджеты Form, я обратил внимание на детали документации, передающие атрибуты виджета в конструкторе ModelForm.
https://docs.djangoproject.com/en/2.2/ref/forms/widgets/#customizing-widget-instances
Попытка эмулировать это в оболочке Django,Атрибут data экземпляра формы возвращает кортеж, а не словарь. Мне не ясно, что вызывает такое поведение.
from django.db import models
class Person(models.Model):
lastname = models.CharField(verbose_name="Last Name", max_length=20)
firstname = models.CharField(verbose_name="First Name", max_length=20)
age = models.CharField(verbose_name="Age", max_length=20)
from django import forms
from .models import Person
class PersonForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(args, kwargs)
self.fields['firstname'].widget.attrs.update({'placeholder': 'First Name'})
class Meta:
model = Person
fields = '__all__'
#django shell
>>> person = PersonForm({'lastname': 'Monster', 'firstname': 'Cookie', 'age': 53})
>>> person.data
({'lastname': 'Monster', 'firstname': 'Cookie', 'age': 53},)