آموزش اضافه کردن اعتبارسنجی به ادمین پنل جنگو

December 2021

در این آموزش یاد میگیرید که چطور یک اعتبارسنجی دلخواه به ادمین پنل جنگو اضافه کنید. اگر در ادمین پنل جنگو سعی کنید مقادیر غیرمجازی را ذخیره کنید، یک پیغام خطا به شما نشان میدهد. معمولا ما نیاز داریم که یکسری اعتبارسنجی به مدل‌های خود اضافه کنیم تا از ورود اطلاعات غلط جلوگیری کنیم. روش‌های مختلفی برای اینکار وجود دارد، اما هدف ما در این آموزش این است که این اعتبارسنجی‌ها را به ادمین پنل جنگو محدود کنیم.

 

در این آموزش ما از یک مدل به نام Todo استفاده میکنیم. این مدل از سه فیلد عنوان، بدنه و تاریخ تشکیل شده است:

class Todo(models.Model):
	title = models.CharField(max_length=200)
	body = models.TextField()
	created = models.DateTimeField()

 

قرار است یک اعتبارسنجی اضافه کنیم تا کاربر نتواند فیلد title را None قرار دهد. برای اینکار در فایل admin.py یک کلاس فرم ساخته و متد clean آن را بازنویسی میکنیم:

from django import forms

class TodoAdminForm(forms.ModelForm):
	def clean(self):
		title = self.cleaned_data.get('title')
		if title == 'None':
			raise forms.ValidationError({'title':'Sorry, Title cant be None'})

 

در متد clean ابتدا مقداری که در فیلد title وجود دارد را گرفته و سپس بررسی میکنیم که مقدار آن None نباشد. اگر بود یک پیغام خطا ایجاد میکنیم. در مرحله بعد باید این فرم را به ادمین پنل اضافه کنید:

@admin.register(Todo)
class TodoAdmin(admin.ModelAdmin):
	form = TodoAdminForm
	list_display = ('title', 'created')

 

با اینکار ادمین پنل از فرمی که ساختید استفاده خواهد کرد. حالا اگر برنامه را اجرا کنید و سعی کنید مقدار title را None قرار دهید، پیغام دلخواه شما را نمایش میدهد:

نمایش پیغام خطا در ادمین پنل جنگو

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم