যদি django.contrib.auth আপনার INSTALLED_APPS-এ থাকে, তাহলে ডিফল্টভাবে অ্যাডমিন প্যানেলে User এবং Group মডেল দেখা যাবে। এগুলো কাজ করবে, তবে সেগুলো সঠিক স্টাইলিং ছাড়াই দেখা যাবে, কারণ এগুলো unfold.admin.ModelAdmin থেকে ইনহেরিট করে না।
এই সমস্যার সমাধান হলো ডিফল্ট অ্যাডমিন ক্লাসগুলোকে আনরেজিস্টার করা এবং তারপর সেগুলোকে unfold.admin.ModelAdmin ব্যবহার করে পুনরায় রেজিস্টার করা।
তাছাড়া, User মডেলের ডিফল্ট ফর্ম (যা Django অ্যাডমিন লোড করে) ওভাররাইড করতে হবে। নতুন ফর্মগুলো সঠিক স্টাইলিংসহ কাজ করবে।
এই টিউটোরিয়ালে, আমরা ডিফল্ট User এবং Group মডেলগুলো আনরেজিস্টার করব এবং Unfold এর ModelAdmin ব্যবহার করে পুনরায় রেজিস্টার করব। নতুন অ্যাপ তৈরি করব যেখানে আমরা এই মডেলগুলো রেজিস্টার করব।
ধাপ ১: নতুন অ্যাপ তৈরি করুন
Django-তে নতুন অ্যাপ তৈরি করতে নিচের কমান্ডটি রান করুন:
python manage.py startapp custom_authধাপ ২: নতুন অ্যাপ settings.py তে যোগ করুন
custom_auth অ্যাপটি Django প্রজেক্টে যোগ করার জন্য INSTALLED_APPS-এ যুক্ত করুন:
# settings.py
INSTALLED_APPS = [
...
'custom_auth',
]
ধাপ ৩: admin.py ফাইল কনফিগার করুন
custom_auth/admin.py ফাইলে নিচের কোড লিখুন:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.admin import GroupAdmin as BaseGroupAdmin
from django.contrib.auth.models import User, Group
from unfold.forms import AdminPasswordChangeForm, UserChangeForm, UserCreationForm
from unfold.admin import ModelAdmin
# ডিফল্ট User এবং Group আনরেজিস্টার করুন
admin.site.unregister(User)
admin.site.unregister(Group)
# User মডেল রেজিস্টার করুন
@admin.register(User)
class UserAdmin(BaseUserAdmin, ModelAdmin):
form = UserChangeForm # Unfold এর সঠিক স্টাইলিং সহ ফর্ম
add_form = UserCreationForm
change_password_form = AdminPasswordChangeForm
list_display = ('username', 'email', 'is_staff', 'is_active')
list_filter = ('is_staff', 'is_active', 'groups')
search_fields = ('username', 'email')
ordering = ('username',)
# Group মডেল রেজিস্টার করুন
@admin.register(Group)
class GroupAdmin(BaseGroupAdmin, ModelAdmin):
list_display = ('name',)
search_fields = ('name',)
ধাপ ৪: Permission মডেল রেজিস্টার করুন
Django এর Permission মডেল auth.Permission থেকে আসে। এটিকে admin.py-তে রেজিস্টার করুন:
from django.contrib.auth.models import Permission
# Permission মডেল রেজিস্টার করুন
@admin.register(Permission)
class PermissionAdmin(ModelAdmin):
list_display = ('name', 'codename', 'content_type')
search_fields = ('name', 'codename')
list_filter = ('content_type',)
ধাপ ৫: মাইগ্রেশন চালান
নিচের কমান্ড দিয়ে মাইগ্রেশন চালান:
python manage.py migrateধাপ ৬: অ্যাডমিন প্যানেল চেক করুন
- অ্যাডমিন প্যানেলে গিয়ে
User,Group, এবংPermissionমডেলগুলো দেখতে পাবেন। - এগুলো Unfold এর
ModelAdminস্টাইল সহ সঠিকভাবে রেজিস্টার করা থাকবে।