মডেলকে একবার সেভ করা যাবে

মনে করি আমাদের 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

Last updated