คำถามติดแท็ก django-managers

13
จะทดสอบหน่วยด้วยการตั้งค่าต่างๆใน Django ได้อย่างไร?
มีกลไกง่ายๆในการลบล้างการตั้งค่า Django สำหรับการทดสอบหน่วยหรือไม่? ฉันมีผู้จัดการในโมเดลของฉันที่ส่งคืนอ็อบเจ็กต์ล่าสุดจำนวนหนึ่ง จำนวนออบเจ็กต์ที่ส่งคืนถูกกำหนดโดยการตั้งค่า NUM_LATEST สิ่งนี้อาจทำให้การทดสอบของฉันล้มเหลวหากมีคนเปลี่ยนการตั้งค่า ฉันจะลบล้างการตั้งค่าsetUp()และเรียกคืนในภายหลังได้tearDown()อย่างไร หากเป็นไปไม่ได้มีวิธีใดบ้างที่ฉันสามารถแก้ไขวิธีการหรือล้อเลียนการตั้งค่าได้ แก้ไข:นี่คือรหัสผู้จัดการของฉัน: class LatestManager(models.Manager): """ Returns a specific number of the most recent public Articles as defined by the NEWS_LATEST_MAX setting. """ def get_query_set(self): num_latest = getattr(settings, 'NEWS_NUM_LATEST', 10) return super(LatestManager, self).get_query_set().filter(is_public=True)[:num_latest] ผู้จัดการใช้settings.NEWS_LATEST_MAXเพื่อแบ่งชุดแบบสอบถาม getattr()จะถูกใช้เพียงเพื่อให้เริ่มต้นควรตั้งค่าได้อยู่

1
เหตุใดจึงต้องสร้าง create_foo () ในรุ่น Django ผู้จัดการแทนการสร้าง ()
การอ่านเอกสาร Django ขอแนะนำให้สร้างวิธีการสร้างที่กำหนดเองสำหรับแบบจำลองที่มีชื่อ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 …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.