Автозаполнение заполнителя формы модели Django с именем модели текущего проекта
Я не хочу автоматически заполнять поля ProjectForm с текущим значением поля, то есть:
class ProjectForm(forms.ModelForm):
project_name = forms.CharField(label='Project Name', widget=forms.TextInput(attrs={'placeholder': 'fixed_value'}))
Однако вместо фиксированного значения я хотел бы предварительно заполнить поле с именем текущего проекта (если необходимо).
1 ответ
Если у вас есть проект / объект в вашем представлении, вы можете сделать это так:
forms.py
:
class ProjectForm(forms.ModelForm):
project_name = forms.CharField(label='Project Name', widget=forms.TextInput(attrs={'placeholder': 'fixed_value'}))
class Meta:
model = Project
fields = ['project_name']
def __init__(self, *args, **kwargs):
placeholder = kwargs.pop("dynamic_placeholder")
super().__init__(*args, **kwargs)
self.fields['project_name'].widget.attrs['placeholder'] = placeholder
views.py
:
class YourView(FormView):
form_class = ProjectForm
def get_form_kwargs(self):
form_kwargs = super().get_form_kwargs()
form_kwargs['dynamic_placeholder'] = 'dynamic_value_queried_by_orm'
return form_kwargs
Я не уверен, что вы подразумеваете под "автопопуляцией". Вы даете placeholder
атрибут в качестве примера, но, возможно, вы хотите использовать initial
вместо?
self.fields['project_name'].initial = placeholder
Но тогда почему вы не используете UpdateView
?