Ans*_*hul 5 python django mongodb django-nonrel
我读了这个页面,但没有得到何时使用嵌入功能以及何时使用链接.我在django中有一个项目,我正在使用MongoDB.在我的models.py文件中,我有以下模型:
class Projects(models.Model):
projectName =models.CharField(max_length = 100,unique=True,db_index=True)
projectManager = EmbeddedModelField('Users')
class Teams(models.Model):
teamType = models.CharField(max_length =100)
teamLeader = EmbeddedModelField('Users')
teamProject = EmbeddedModelField('Projects')
objects = MongoDBManager()
class Users(models.Model):
name = models.CharField(max_length = 100,unique=True)
designation = models.CharField(max_length =100 )
teams = ListField(EmbeddedModelField('Teams'))
class Tasks(models.Model):
title = models.CharField(max_length = 150)
description = models.CharField(max_length=1000)
priority = models.CharField(max_length=20)
Status = models.CharField(max_length=20)
assigned_to = EmbeddedModelField('Users')
assigned_by = EmbeddedModelField('Users')
child_tasks = ListField()
parent_task = models.CharField(max_length = 150)
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我们进行嵌入,我们是否必须更新所有模型中的对象.如果我想更新"用户"的名称,我将不得不为模型运行更新:项目,团队,用户和任务或链接在我的情况下会更好吗?
首先,从概念上讲,将模型类命名为单一对象。
用户应该是用户,团队应该是团队......
将模型视为可以制造多个物体的模具。用户模型将产生用户并存储在名为用户的表中,其中每个文档/行都是一个用户对象。
现在,关于你的问题,hymloth 是完全正确的。使其成为对文档而不是嵌入文档的引用的方法是更改这些特定字段以引用用户集合中用户的 ID。这样,您只需存储要查找的 ID,而不是用户文档的副本。当您更改参考文档时,它所引用的所有位置也会发生更改。(典型的关系关联)
我在 Django-mongoDB 中也没有看到该字段,但也许您可以使用传统的 djangoforeignKey 字段来实现此目的。我不知道你是否可以混合搭配,所以尝试一下。
例如,您的 Teams 类将具有如下字段:
teamLeader = ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
让我知道这是否有效。
| 归档时间: |
|
| 查看次数: |
2908 次 |
| 最近记录: |