如何扩展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, Userclass 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