Как автоматически заранее заполнить форму django?
У меня есть форма
class FileFieldForm(ModelForm):
class Meta:
model = FileFeedbackEventToSubscriber
fields = ('FeedbackFile', 'event', 'subscriber')
Модель:
class FileFeedbackEventToSubscriber(Model):
event = models.ManyToManyField(FileFeedbackEvent, verbose_name='Событие')
subscriber = models.ManyToManyField(User, verbose_name='Подписчик')
FeedbackFile = models.FileField(upload_to='files/', null=True, blank=True)
SubscriptionDate = models.DateField(default=datetime.date.today)
Выдает вот так:
Поле SubscriptionDate всегда заполняется, это понятно, мне нужно сделать, чтоб остальные поля, кроме FeedbackFile заполнялись автоматически. Все данные для этого передаются. Как это можно сделать так, чтоб при входе в форму даже не предлагало ввести данные в эти поля формы?
Ответы (1 шт):
Словарь initial. Вы его можете передать во View-класс, наследующий от FormView или CreateView. Примерно так:
class CreatePost(FormView):
form_class = ...
template_name = ...
initial = {'title':'заголовок'}
В initial первое вы указываете имя вашего поля, второе его значение.
Или можете отдельно в forms.py для полей прописать initial. Ну к примеру:
Class CreateForm(forms.Form):
title = forms.CharField(initial='value field title')
Еще можно указать у полей (в модели) default, но лучше это сделать на уровне формы, а не модели.
Так же initial можно передать в форму при ее создании, или переопределить в __init__ методе формы для конкретного поля
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['field'].initial = ....
