在 mongoengine 模型字段中引用 SQL 模型
Referencing SQL model in mongoengine model field
我在我的锻炼日历 Django 项目中使用 mongoengine 来存储不同领域的锻炼,这取决于用户完成了哪些举重动作、次数等。
我已经定义了一个 Workout
对象,代表一个人在特定日期完成的一次锻炼。
class Workout(Document):
id = IntField(unique=True, null=False)
date = DateTimeField()
lifts = EmbeddedDocumentListField(LiftSerie)
cardio = EmbeddedDocumentListField(CardioSerie)
你们中的一些人可能会注意到,没有代表进行锻炼的人的字段。这就是我的问题所在。在我的 Django 项目中,我定义了一个我使用的自定义 User
模型,而不是普通的 django.contrib.auth.models.User
对象:
class User(AbstractUser):
REQUIRED_FIELDS = []
USERNAME_FIELD = 'email'
email = models.EmailField(
unique=True,
},
)
这个模型是一个普通的 Django 模型,在 SQL 数据库中表示,在我的例子中是 SQLite。我希望此模型充当我的 Workout
mongoengine 模型中的 user
字段。像这样:
class Workout(Document):
id = IntField(unique=True, null=False)
date = DateTimeField()
lifts = EmbeddedDocumentListField(LiftSerie)
cardio = EmbeddedDocumentListField(CardioSerie)
person = ReferenceField(User) #New row
这有可能以某种方式实现吗?或者我是否需要通过简单地向我的 mongoengine 模型添加一个 email
字段来表示用户(电子邮件是 User
中的唯一字段)来为我的网络应用程序引入冗余。
我将实现一个自定义模型管理器,它通过使用 db_manager
实现您要求的查询
您通过使用两种不同的数据库类型实现了大量额外的复杂性。如果我是你,我会考虑利用 NoSQL 和 Postgres 的 JSON 功能来简化你的数据库基础设施。
我在我的锻炼日历 Django 项目中使用 mongoengine 来存储不同领域的锻炼,这取决于用户完成了哪些举重动作、次数等。
我已经定义了一个 Workout
对象,代表一个人在特定日期完成的一次锻炼。
class Workout(Document):
id = IntField(unique=True, null=False)
date = DateTimeField()
lifts = EmbeddedDocumentListField(LiftSerie)
cardio = EmbeddedDocumentListField(CardioSerie)
你们中的一些人可能会注意到,没有代表进行锻炼的人的字段。这就是我的问题所在。在我的 Django 项目中,我定义了一个我使用的自定义 User
模型,而不是普通的 django.contrib.auth.models.User
对象:
class User(AbstractUser):
REQUIRED_FIELDS = []
USERNAME_FIELD = 'email'
email = models.EmailField(
unique=True,
},
)
这个模型是一个普通的 Django 模型,在 SQL 数据库中表示,在我的例子中是 SQLite。我希望此模型充当我的 Workout
mongoengine 模型中的 user
字段。像这样:
class Workout(Document):
id = IntField(unique=True, null=False)
date = DateTimeField()
lifts = EmbeddedDocumentListField(LiftSerie)
cardio = EmbeddedDocumentListField(CardioSerie)
person = ReferenceField(User) #New row
这有可能以某种方式实现吗?或者我是否需要通过简单地向我的 mongoengine 模型添加一个 email
字段来表示用户(电子邮件是 User
中的唯一字段)来为我的网络应用程序引入冗余。
我将实现一个自定义模型管理器,它通过使用 db_manager
您通过使用两种不同的数据库类型实现了大量额外的复杂性。如果我是你,我会考虑利用 NoSQL 和 Postgres 的 JSON 功能来简化你的数据库基础设施。