у меня есть модель
class Group(models.Model):
active = models.BooleanField(null=False, blank=False, default=True)
и его административные страницы
class GroupAdmin(admin.ModelAdmin):
change_form_template = "admin/group/group.html"
form = GroupAdminForm
def change_view(self, request, object_id, form_url='', extra_context=None):
extra_context = extra_context or {}
extra_context['group_data'] = self.get_info(object_id)
return super(GroupAdmin, self).change_view(
request, object_id, form_url, extra_context=extra_context,
)
class GroupAdminForm(ModelForm):
class Meta:
model = Group
fields = '__all__'
def clean_active(self):
active = self.cleaned_data['active']
if 'active' in self.changed_data and not active and OtherCondition:
raise ValidationError('Group must stay active because of OtherCondition')
return active
для которого требуется шаблон change_view.
Из-за шаблона change_view ошибки проверки не отображаются.
Как мне выдать ошибку проверки и отобразить ее в админке Django? Есть ли способ сделать это с помощью ValidationError? Это путем изменения шаблона change_view?
- Когда я бросаю его в Group.save() в модели, он ломает страницу вместо того, чтобы не сохранять и сообщать пользователю об исправлении ошибки.
- Сначала я не использовал форму AdminForm, но ее использование означает, что проверка запущена, и она запрашивает изменение (Пожалуйста, исправьте ошибку ниже.), но не показывает сообщение ValidationError.
Этот вопрос похож, но рекомендует сообщения, но я хотел бы знать, есть ли другой способ: Поднять ошибку проверки администратора django из пользовательского представления
Я не думаю, что специально включаю ошибки полей, но я думаю, что их следует включать через предоставленный django html:
admin/change_form имеет
{% block field_sets %}
{% for fieldset in adminform %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
{% endblock %}
и admin/includes/fieldset .html содержит {{ line.errors }}
. Может быть, это связано с передачей ошибки в change_view?
group.html
по запросу.
{% extends "admin/change_form.html" %}
{% block field_sets %}
{# stuff #}
{{ block.super }}
{% endblock %}
{% block inline_field_sets %}
{% for inline_admin_formset in inline_admin_formsets %}
{# stuff #}
{% endfor %}
{% endblock %}
{# M2M Preview #}
{% block after_related_objects %}
{# stuff #}
{% endblock %}
group.html
(или хотя бы рендеринг формы)? Если вы визуализируете вручную, включаете ли вы ошибки поля? - person Paulo Almeida   schedule 26.03.2018non_field_error
с полемNone
, просто чтобы посмотреть, работает ли это. - person Paulo Almeida   schedule 26.03.2018line
в шаблоне и других связанных переменных. - person Paulo Almeida   schedule 26.03.2018