পড়া জ্যাঙ্গো ডক্স , এটা নামে একটি মডেল জন্য একটি কাস্টম সৃষ্টি পদ্ধতি করতে পরামর্শ Foo
যেমন সংজ্ঞা দ্বারা create_foo
পরিচালকে:
class BookManager(models.Manager):
def create_book(self, title):
book = self.create(title=title)
# do something with the book
return book
class Book(models.Model):
title = models.CharField(max_length=100)
objects = BookManager()
book = Book.objects.create_book("Pride and Prejudice")
আমার প্রশ্নটি হল যে পূর্ববর্তীটি কেবল বেস শ্রেণীর create
পদ্ধতির উপর নির্ভর করে কেন অগ্রাধিকার দেয় :
class BookManager(models.Manager):
def create(self, title):
book = self.model(title=title)
# do something with the book
book.save()
return book
class Book(models.Model):
title = models.CharField(max_length=100)
objects = BookManager()
book = Book.objects.create("Pride and Prejudice")
ইমো দেখে মনে হচ্ছে যে কেবলমাত্র ওভাররাইডিং create
এটিকে দুর্ঘটনাক্রমে কোনও দুর্নীতিবাজ মডেল উদাহরণ তৈরি create_foo
করতে বাধা দেবে , যেহেতু সর্বদা সম্পূর্ণভাবে বাইপাস করা যায়:
class BookManager(models.Manager):
def create_book(self, title):
book = self.create(title=title, should_not_be_set_manually="critical text")
return book
class Book(models.Model):
title = models.CharField(max_length=100)
should_not_be_set_manually = models.CharField(max_length=100)
objects = BookManager()
# Can make an illformed Book!!
book = Book.objects.create(title="Some title", should_not_be_set_manually="bad value")
ডক্সের পরামর্শ মতো এটি করার কোনও সুবিধা কি আছে বা আসলে create
উদ্দেশ্যমূলকভাবে আরও ভালভাবে অগ্রাহ্য হচ্ছে ?