К сожалению, не существует простого способа сделать это чисто на стороне сервера. Тем не менее, это должно быть относительно легко сделать с некоторым JavaScript - переключение видимости поля причины в зависимости от состояния. Ниже приведен пример использования jQuery:
$(document).ready(function() {
// Toggle visibility on page load
setReasonVisibility();
// Toggle visibility on status change
$('form #id_status').bind('change', setReasonVisibility)
function setReasonVisibility() {
var form = $('form');
var status = $(form).find('#id_status').val();
if (status == 'rejected')
$(form).find('#id_reason').show();
else
$(form).find('#id_reason').hide();
}
});
Чтобы форма загружала файл JavaScript, вам нужно сослаться на него в классе Media
на форму для вашей модели, как-то так:
class YourModelForm(forms.ModelForm):
class Meta:
model = YourModel
class Media:
js = ('path/to/jquery.js', 'path/to/your-js-file.js')
Это решение должно без проблем работать в админке Django.