我有个模特
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模板吗?
这个问题类似,但推荐消息,但我想知道是否有其他方法:从自定义视图引发django管理验证错误
我并不认为我具体地包含了字段错误,但我认为应该通过django提供的html来包含它们:
表格有
{% block field_sets %}
{% for fieldset in adminform %}
{% include "admin/includes/fieldset.html" %}
{% endfor %}
{% endblock %}admin/include/admin set.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 %}发布于 2018-04-09 13:21:42
在这种情况下,我认为表单验证是个好主意。
forms.py
class YourForm(forms.ModelForm):
def clean(self):
super(YourForm, self).clean()
data1 = self.cleaned_data.get('data1')
data2 = self.cleaned_data.get('data2')
# Add validation condition here
# if validation error happened you can raise the error
# and attach the error message with the field you want.
self.add_error('field_name', 'error message')在admin.py
class YourAdminClass(admin.ModelAdmin):
form = YourFormhttps://stackoverflow.com/questions/49496818
复制相似问题