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)