首页 > 解决方案 > 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):
?

我不确定这是否是正确的方法。

标签: pythondjangoapimodels

解决方案


您应该使用多对多关系。首先,您应该从 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


推荐阅读