【发布时间】:2021-01-05 06:20:05
【问题描述】:
我正在使用 mongodb 作为数据库并尝试扩展 django 的内置用户模型。 这是我得到的错误:
django.core.exceptions.ValidationError: ['Field "auth.User.id" of model container:"<class \'django.contrib.auth.models.User\'>" cannot be of type "<class \'django.db.models.fields.AutoField\'>"']
这是我的models.py:
from djongo import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.EmbeddedField(model_container=User)
mobile = models.PositiveIntegerField()
address = models.CharField(max_length=200)
pincode = models.PositiveIntegerField()
【问题讨论】:
-
首先,如果您想使用 MongoDB 作为数据库,
profile应该继承自from mongoengine.document import Document,但我不确定您是否可以将用户定义为 django 模式中的嵌入字段。 -
@MaryamAbdoli,
Profile不应继承自from mongoengine.document import Document。这里它继承自djongo.Model并且 djongo 应该照顾一切。 -
另外使用
EmbeddedField不是一个好主意,因为它会复制数据库中的用户数据。只需将用户 id 保留在模型中并单独查询即可。 -
@suraj 你找到解决办法了吗?
-
@ShivamYadav 是的
标签: mongodb django-models pymongo mongoengine djongo