Я использую exclude
в своем классе Meta для исключения поля из моей формы, которое я хочу заполнить программно, но оно все еще отображается в форме.
Вот некоторые отрывки из кода:
# Model
class Info(models.Model):
completed_by = models.ForeignKey(User, related_name='+')
# Form
class InfoForm(forms.ModelForm):
class Meta:
model = Info
exclude = ('created_by',) #ETA: added comma to make this a tuple
widgets = {
'some_other_field': forms.HiddenInput(),
'some_other_field2': forms.DateInput(attrs={'readonly': True}),
}
# View
form = InfoForm(initial={'some_other_field': value},
prefix='info', instance=info)
return direct_to_template(request, 'myapp/info.html', locals())
# Template
<form class='uniForm' method='POST'>
{% csrf_token %}
<fieldset class='inlineLabels'>{{ form|as_uni_form }}</fieldset>
<input type='submit' name='action' value='Save' />
</form>
Кажется, что это должно быть довольно просто, и я знаю, что я сделал это успешно раньше. Я удалил/воссоздал свою БД и очистил кеш браузера, чтобы быть уверенным, что это не фактор. Я также попытался сделать это поле HiddenInput
, как и some_other_field
(которое также является полем ForeignKey
), но оно все еще отображается в форме.
Есть ли что-то здесь, я не хватает? Как uni_form переопределяет настройку? Если нет, то какие-либо рекомендации относительно того, что я могу найти в отладке, чтобы узнать, где/почему это происходит?
(с использованием Django версии 1.2.7)