我创建了一个自定义用户模型。我创建的CustomUserManager是否也可以扩展django.contrib.gis.db.GeoManager?

时间:2014-08-04 04:54:31

标签: python django django-models

我实现了一个大致如下的自定义用户模型:

class User(AbstractBaseUser):

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['username']

    id = models.IntegerField(DjangoUser, primary_key=True, null=False)
    username = models.CharField(max_length=20, unique=True, db_index=True, null=False)

    flag = models.PointField(srid=4326, geography=True, null=True)

    # objects = models.GeoManager()

    def __unicode__(self):
        return self.username

作为一项要求,我需要继续支持对flag字段的查询(只有objects = models.GeoManager()才可以)。我了解到,通过创建扩展AbstractBaseUser的新用户模型,我需要创建一个扩展CustomUserManager的新UserManager。

使用自定义UserManager时,有没有办法保留GeoManager提供的功能?

我为缺乏适当的术语而道歉。这是我的第一个django应用程序。随意填写我本可以使用的术语。

1 个答案:

答案 0 :(得分:1)

为什么不创建从GeoManager继承的CustomUserManager类并在那里添加所需的用户相关功能:

class CustomUserManager(GeoManager):
    def create_user(self, ...):
        ...

class User(AbstactBaseUser):
     ...
     objects = CustomUserManager()