python - Django 设计模型:项目/库存/用户
问题描述
我想就建模特定模型行为提出一些建议。基本上我有一个模型项目。它描述了项目的名称和描述。
我有一个库存,它应该包含一个项目的“列表”,考虑到每个项目的数量应该在库存中指定。
每个都User
应该有一个独特的库存。
这是我正在尝试做的事情:
class User(models.Model):
name = models.CharField(max_length=100)
invetory =models.ForeignKey(inventory,on_delete=models.CASCADE)
class item(models.Model):
name =models.CharField(max_length=40)
description = models.TextField(max_length=200)
value = models.FloatField()
class inventory(models.Model):
?
我不确定这是否是正确的方法。
解决方案
您应该使用多对多关系。首先,您应该从 User 模型中删除 FK。然后为项目创建一个单独的模型,最后将许多用户链接到许多项目(一个用户可以处理多个项目,一个项目可以属于多个用户)。像这样的东西:
class User(models.Model):
name = models.CharField(max_length=100)
class item(models.Model):
name =models.CharField(max_length=40)
class inventory(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
item = models.ForeignKey(item, on_delete=models.DO_NOTHING)
quantity = models.FloatField()
PS 类名称应使用 PascalCase 约定https://www.python.org/dev/peps/pep-0008/?#class-names
推荐阅读
- reactjs - 使用 Bootstrap 垂直对齐
- c++ - 如何在不视觉上使用滚动条的情况下更改视图
- java - java没有进入循环
- node.js - 带有 UnhandledPromiseRejectionWarning 的 Firebase 消息发送()错误
- css - CSS max-width 和 calc() 在这里真正做了什么?
- excel - 宏复制和粘贴并按前 3 个值(或更多)排序
- angular - 如何在 Angular 中更改内联 svg 的颜色?
- python - pywinauto - 如何选择菜单项?(UIA 后端)
- sql - 将编码列添加到现有表
- android - 第二次单击时自定义 AlertDialog 错误