মনে করি আমাদের app এ কোম্পানি ইনফরমেশন এর দরকার যা শুধু একবার সেভ করতে হয় পরে আপডেট করতে হয় আর দ্বিতীয় কোন ডেটা ইন্সার্ট করতে দেয়া হয় না এটা করার জন্য আমাদের নিচের পদ্ধতি অবলম্বন করবো।
models.py
from django.db import models
class CompanyInfoManager(models.Manager):
def get_or_create_single(self, defaults=None, **kwargs):
instance, created = self.get_or_create(**kwargs, defaults=defaults)
return instance
class CompanyInfo(models.Model):
name = models.CharField(max_length=100)
address = models.TextField()
# Add other fields as needed
objects = CompanyInfoManager()
def save(self, *args, **kwargs):
# Ensure that only one instance exists
if CompanyInfo.objects.exists() and not self.pk:
raise ValueError("Only one CompanyInfo instance can be created.")
super().save(*args, **kwargs)
def delete(self, *args, **kwargs):
# Prevent deletion of the instance
pass
class Meta:
verbose_name_plural = "Company Information"
admin.py
from django.contrib import admin
from .models import CompanyInfo
@admin.register(CompanyInfo)
class CompanyInfoAdmin(admin.ModelAdmin):
# Define the fields to display and edit in the admin panel
list_display = ('name', 'address')
fields = ('name', 'address')
# Disable the "Add" button in the admin panel
def has_add_permission(self, request):
return False