所以,我正在尝试使用MongoDB数据库和Django(使用MongoEngine)构建一个简单的站点,但我仍然试图了解用户配置文件的工作方式。我可以将mongo_auth.MongoUser文档保存到数据库中,但是当实际保存配置文件时,我做的不对。这是我尝试使用MongoUser设置的用户配置文件模型/文档:
from mongoengine.django.auth import User
from mongoengine import *
[...]
class UserProfile(Document):
user = EmbeddedDocumentField('User')
telephone = models.CharField(max_length=30,null=True,blank=True)
address = models.CharField(max_length=100, null=True, blank=True)
birthdate = models.DateField(null=True, blank=True)
def create_user_profile(sender, instance, created, **kwargs):
if created:
profile, created = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_user_profile, sender=User)
在具有关系数据库的Django中,UserProfile是一个models.Model,而user字段是OneToOne关系,但我不知道如何将它映射到MongoUser,所以我猜到了以下几行:
class UserProfile(Document):
user = EmbeddedDocumentField('User')
但是,显然,由于Django无法加载配置文件,因此不正确:
Unable to load the profile model, check AUTH_PROFILE_MODULE in your project settings
我认为我的settings.py配置正确,因为我可以保存MongoUser(没有配置文件),下面的行告诉Django在哪里可以找到UserProfile:
AUTH_PROFILE_MODULE = 'comptes.UserProfile'
我还是Django和MongoDB的新手,所以非常感谢所有的帮助。
谢谢!
答案 0 :(得分:0)
您必须使用mongoengine.fields.ReferenceField。像这样的东西
class UserProfile(Document):
user = ReferenceField('User')