Django4.0 管理器-管理器調(diào)用自定義QuerySet方法

2022-03-16 18:04 更新

因?yàn)榇蟛糠值臉?biāo)準(zhǔn) ?QuerySet ?方法能直接從 ?Manager ?訪(fǎng)問(wèn),這個(gè)實(shí)例僅適用于你在自定義 ?QuerySet ?中定義了額外方法,且在 ?Manager ?中實(shí)現(xiàn)了它們:

class PersonQuerySet(models.QuerySet):
    def authors(self):
        return self.filter(role='A')

    def editors(self):
        return self.filter(role='E')

class PersonManager(models.Manager):
    def get_queryset(self):
        return PersonQuerySet(self.model, using=self._db)

    def authors(self):
        return self.get_queryset().authors()

    def editors(self):
        return self.get_queryset().editors()

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    role = models.CharField(max_length=1, choices=[('A', _('Author')), ('E', _('Editor'))])
    people = PersonManager()

本例允許你從管理器 ?Person.people? 直接調(diào)用 ?authors()? 和 ?editors()?。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)