Hariharan AR
Hariharan AR

Reputation: 1546

How to show error message while save data from admin side.? i using models.model for create models

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..!")

here I faced the error in

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

I can't use

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

Anybody know alternative way to show error message.

Upvotes: 2

Views: 60

Answers (1)

Ilko
Ilko

Reputation: 1418

Try this in 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)

Remove save() method from your model.

You can move SettingForm in forms.py file and then import it in admin.py

I hope this will help

Upvotes: 1

Related Questions