Как показать сообщение об ошибке при сохранении данных со стороны администратора.?я использую models.model для создания моделей - PullRequest
0 голосов
/ 21 января 2019
class Setting(models.Model):
        id=models.AutoField(primary_key=True, unique=True)
        ldap_server = models.CharField(max_length=100, default='ldap://yourDomain.in')
        ldap_server_username = models.CharField(max_length=100, null=True)
        ldap_server_password = models.CharField(max_length=100, null=True)
    def save(self, *args, **kwargs):
        ldap_server=self.ldap_server
        ldap_server_username = self.ldap_server_username
        ldap_server_password = self.ldap_server_password
        try:
            l = ldap.initialize(ldap_server)
            l.protocol_version = ldap.VERSION3
            l.set_option(ldap.OPT_REFERRALS, 0)
            l.simple_bind_s(ldap_server_username, ldap_server_password)
            super(Setting, self).save(*args, **kwargs)
        except:
            messages.error(request, "You have logged in..!")

здесь я столкнулся с ошибкой в ​​

messages.error(request, "You have logged in..!")

Я не могу использовать

messages.error(request, "You have logged in..!")

Кто-нибудь знает альтернативный способ показать сообщение об ошибке.

1 Ответ

0 голосов
/ 22 января 2019

Попробуйте это в admin.py:

#admin.py
from models import Setting
from django.contrib import admin
from django import forms


class SettingForm(forms.ModelForm):
    class Meta:
        model = Setting

        def clean(self):
            ldap_server = self.cleaned_data.get('ldap_server')
            ldap_server_username = self.cleaned_data.get('ldap_server_username')
            ldap_server_password = self.cleaned_data.get('ldap_server_password')

            # your ldap logic here

            if your_condition:
                raise form.ValidationErro('You have logged in..!')
        return self.cleaned_data


class SettingAdmin(admin.ModelAdmin):
    form = SettingForm
    list_display = ('ldap_server', 'ldap_server_username', 'ldap_server_password')

admin.site.register(Setting, SettingAdmin)

Удалите метод save () из вашей модели.

Вы можете переместить SettingForm в файл forms.py и затем импортировать его в admin.py

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...