ফিল্ড এর ডিজাইন বুটস্ট্রাপ ফরম্যাটে হবে

মনেকরি আমাদের নিচের মত একটা মডেল আছে।

class Item(models.Model):
    code = models.CharField(max_length=25, unique=True,default='')
    name = models.CharField(max_length=100, unique=True)
    description = models.TextField()
    warehouse = models.ForeignKey(Warehouse, on_delete=models.CASCADE, default=1)
    unit = models.ForeignKey(Unit, on_delete=models.SET_DEFAULT, default=1)
    price = models.DecimalField(max_digits=10, decimal_places=2, default=0)

এখন আমরা এই মডেলকে অ্যাডমিন প্যানেল এ যোগ করবো এবং ফিল্ড এর ডিজাইন বুটস্ট্রাপ ফরম্যাটে হবে এ জন্য যা যা করতে হবে।

আমাদের app ডিরেক্টরিতে widgets.py নামে একটি ফাইল তৈরী করে নিচের কোড লিখতে হবে।

widgets.py

from django.forms import widgets

class CustomFieldWidget(widgets.Widget):
    def render(self, name, value, attrs=None, renderer=None):
        html = f'''
            <div class="custom-field">
                <label class="custom-label" for="{name}">{name.capitalize()}</label>
                <div class="custom-input">
                    <input type="text" id="{name}" name="{name}" value="{value}" class="custom-control" />
                    <!-- Add any additional elements or customization here -->
                </div>
            </div>
        '''
        return html

এবার আমাদের admin.py ফাইলে আমাদের মডেলটি অ্যাড করে দিতে হবে এবং ফিল্ড এর স্ট্রাকটার ওভার রাইট করে দিতে হবে নিচের মত।

from django.contrib import admin
from django import forms
from django.db import models
# our widgets
from ItemMasterData.widgets import CustomFieldWidget
# our model 
from .models import  Item
class ItemAdmin(admin.ModelAdmin):
    fields = ('code', 'name', 'description', 'warehouse', 'unit')
    formfield_overrides = {
        models.CharField: {'widget': CustomFieldWidget},
        models.TextField: {'widget': CustomFieldWidget},
        # Add overrides for other field types as needed
    }

admin.site.register(Item,ItemAdmin)

Last updated