我的网站有两种用户类型,客户端和专业版.还有两个"主要模块",一个用于客户购买东西等(主要网站),另一个用于专业人员管理操作.对于auth,我想:
由于Django不会让我使用两个模型进行身份验证.我创建了自定义模型子类AbstractBaseUser,它作为Client和Professional的基础auth类.
class BaseUser(AbstractBaseUser):
...
class Client(BaseUser):
...
class Professional(BaseUser):
...
Run Code Online (Sandbox Code Playgroud)
我还将AUTH_USER_MODEL设置更改为:
AUTH_USER_MODEL = 'myapp.BaseUser'
Run Code Online (Sandbox Code Playgroud)
我还包括django-allauth来管理用户注册和身份验证.但是现在我被卡住了.我刚开始玩Django/Python,我不知道如何解决这个问题.
似乎没有官方推荐的方法(使用Django 1.5实现多个用户类型).我应该坚持子类化方法,还是应该在文档中指出OnetoOne关系?
一旦我正确设置了模型,我该如何处理这两个注册表单?是否有可能用django-allauth实现这一点,还是我需要手动完成?
据我所知,当注册新用户时,会在User表中创建一个新的基本用户.但由于我将创建用户专业化(客户端或专业版),我应该如何指定我还想在相应的表中创建与客户端相关的数据或专业相关的数据?
我对Django很新,所以任何建议都会有所帮助
我坚持使用这个简单的前缀查询.虽然Mongo文档声明通过使用前缀regex格式(/ ^ a /)可以获得相当好的性能,但是当我尝试对结果进行排序时,查询速度非常慢:
940毫升
db.posts.find({hashtags:/ ^ noticias /}).limit(15).sort({rank:-1}).hint('hashtags_1_rank_-1').explain()
{
"cursor" : "BtreeCursor hashtags_1_rank_-1 multi",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 142691,
"nscanned" : 142692,
"nscannedObjectsAllPlans" : 142691,
"nscannedAllPlans" : 142692,
"scanAndOrder" : true,
"indexOnly" : false,
"nYields" : 1,
"nChunkSkips" : 0,
"millis" : 934,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticiat"
],
[
/^noticias/,
/^noticias/
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
] …Run Code Online (Sandbox Code Playgroud)