django - REST为Django中的不同用户添加属性
问题描述
我构建了我的第一个应用程序,它允许我在名为“项目”的表中创建新条目现在我有标准用户模型,我想创建一个新表,我可以在其中将用户(ID 或名称)分配给一个或更多项目对象。
理想情况下,这应该是一个全新的表,其中只包含用户的 ID/名称和项目的 ID/名称的条目对。但我真的不知道如何从用户列表中提取一个对象,从项目列表中提取一个对象以将它们放在一个新表中。
用户应该能够添加一个新的“项目”并自动分配给它。
解决方案
我建议做的是像这样构建你的模型:
class Project(models.Model):
... other fields
users = models.ManyToManyField(User, null=True, blank=True)
正如您在此处看到的,我正在使用 ManyToMany 关系,它创建了另一个存储 project_id-user_id 对的表。
如果您想返回项目对象的所有用户对象,您应该执行以下操作:
project = Projects.objects.get(...)
project_users = project.users.all()
如果您想为 User 对象返回相关项目,您应该执行以下操作:
user = User.objects.get(...)
user_projects = user.project_set.all()
如需更多参考,请参阅https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_many/
推荐阅读
- javascript - 从 package.json 中删除包后 package-lock.json 没有更新?
- android - 如何按国家/地区阻止呼叫 || 区号?
- linux - 我正在使用 vlan,我必须编写一个使用 vlan 接口来接受数据包的服务器?
- php - 我只是不小心用 cPanel 中的另一个文件替换了我的整个 php 代码-有什么办法可以取回该代码吗?
- ios - 无法将 UIPickerView 中的选定值保存到数组
- javascript - 当页面重新调整为较小的宽度时,如何防止页面内容重新调整大小
- android - 根据android kotlin中所需的输出格式显示日期不起作用
- awk - sed 命令删除与模式 (sed) 匹配的行块(上方和下方) - 使用 Python 解决
- css - 用于提取文本的 GTM CSS 选择器
- javascript - 当我敲击键盘 Enter 键以访问网页时,我需要展开和折叠纯 CSS 手风琴