如何扩展Django Group模型?

有没有一种方法可以扩展内置的Django Group对象以添加其他属性,类似于可以扩展用户对象的方法?使用用户对象,你可以执行以下操作:

class UserProfile(models.Model):

user = models.OneToOneField(User)

并将以下内容添加到settings.py文件中

AUTH_PROFILE_MODULE = 'app.UserProfile'

这使你:

profile = User.objects.get(id=1).get_profile()

扩展小组有什么等效方法吗?如果没有,我是否可以采用其他方法?

回答:

你可以创建一个对Group进行子类化的模型,添加自己的字段,并使用模型管理器返回所需的任何自定义查询集。这是一个截断的示例,显示了我如何扩展“组”以表示与学校关联的家庭:

from django.contrib.auth.models import Group, User

class FamilyManager(models.Manager):

"""

Lets us do querysets limited to families that have

currently enrolled students, e.g.:

Family.has_students.all()

"""

def get_query_set(self):

return super(FamilyManager, self).get_query_set().filter(student__enrolled=True).distinct()

class Family(Group):

notes = models.TextField(blank=True)

# Two managers for this model - the first is default

# (so all families appear in the admin).

# The second is only invoked when we call

# Family.has_students.all()

objects = models.Manager()

has_students = FamilyManager()

class Meta:

verbose_name_plural = "Families"

ordering = ['name']

def __unicode__(self):

return self.name

以上是 如何扩展Django Group模型? 的全部内容, 来源链接: utcz.com/qa/434456.html

回到顶部