【问题标题】:How to create a model with a field that contains the unique values from a field in another model?如何创建一个模型,其字段包含另一个模型中字段的唯一值?
【发布时间】:2021-04-30 17:58:45
【问题描述】:

使用 django 3.1.3

我有一个模型(项目),其中包含用户提交的所有项目。所有这些项目都分组到用户定义的类别中。每条记录都包含项目名称和类别名称。

我想做的是创建第二个模型(类别),它将有两个字段:

  • category:填充了来自(Item)中类别字段的唯一值
  • include:指示是否应包含“类别”的布尔值

假设模型(物品)具有以下独特的类别:“衣服”、“杂货”、“椅子”。我希望 (Category) > category 包含每个唯一值的一条记录。 我如何构建模型(类别)来实现这一点?

这是模型(项目)的相关部分:

class Item(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)
    include = models.BooleanField(default=False)
    quantity = models.PositiveIntegerField(default=0)
    category = models.CharField(max_length=20)
    item = models.CharField(max_length=50) 

这就是我所拥有的(类别):

class Category(models.Model):
    include = models.BooleanField(default=True)
    category = ????

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    这听起来像是在 Item 模型上使用 ManyToMany 字段的主要示例。基本上,Django 要做的是创建所谓的通过模型,它允许您将多个类别与多个项目相关联。以下是供进一步参考的文档:

    https://docs.djangoproject.com/en/3.1/topics/db/examples/many_to_many/

    【讨论】:

    • 我不需要任何项目来分配多个类别。类别是项目的容器。我的目标是开发一种能力来指示是否应该包含或排除一个类别(因此所有包含的项目也将被排除或排除)。使用所有唯一类别的模型,我可以为每个类别提供一个“包含”字段,该字段可以标记为真或假。
    • 那么一个项目只能属于一个类别?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2016-01-02
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2012-03-10
    相关资源
    最近更新 更多