无法理解外键和djang中的许多字段

2024-09-30 03:26:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这是一个非常基本的问题。我正在学习django,我看到最重要的部分是国外的关键领域和许多领域。它们被广泛使用。如果不了解这两者,就无法设计出合适的模型。如果我要设计一个具有FK关系的模型,我总是要先看一个例子,然后给出解决方案。我不能自信地设计一个模型,因为我不太了解这一点。如果有人能让我明白什么是FKField,FKField和MTMField是如何用简单的英语在表格中生成的(语言是我从文档中理解的障碍之一),那就太好了。你知道吗

这是外键的模型

class Category(models.Model):
  name = models.CharField()

class Product(models.Model):
  name = models.CharField()
  category = models.ForeignKeyField(Category, related_name="product")  

Tags: djangoname模型model关系models解决方案领域
1条回答
网友
1楼 · 发布于 2024-09-30 03:26:00

在django中,可以添加一个“变量”实例作为表的一部分:即ForeignKey。你知道吗

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=30)
    category = models.ForeignKey(Category)

class Category(models.Model):
    name = models.CharField(max_length=30)

在这里,您将有一个名为“[NAME OF YOUR APP]\u product”的SQL表,该表将有两列:“NAME”和“category\u id”。你知道吗

您将拥有另一个名为“[NAME OF YOUR APP]\u category”的表,该表将包含一列“NAME”。你知道吗

Django知道,当您加载产品时,它必须获取其category\u id,然后从category表中获取该元素。你知道吗

这是因为您使用了foreignkey:它是一个“变量”。它是“多对一”,因为你可以有许多产品具有相同的类别。你知道吗

然后你就有了“多对多”。这里可以有多个“变量”

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=30)
    category = models.ManyToManyField(Category)

class Category(models.Model):
    name = models.CharField(max_length=30)

这里的区别是,您将得到一个名为“[NAME OF YOUR APP]\u product”的表,其中只有一列:“NAME”。你知道吗

接下来,您将有一个表“[应用程序名称]\u product\u category”,其中包含“product\u id”和“category\u id”列。你知道吗

最后一个表是“[NAME OF YOUR APP]\u category”,其中有一列:“NAME”。你知道吗

它的工作方式是,Django将获得产品,并看到它有许多领域的类别。你知道吗

它将转到“[应用程序名称]\u产品类别”,并从“[应用程序名称]\u类别”获取所需产品id的id列表。你知道吗

这是多对多,因为你可以有很多产品,每一个不同的类别很多。你知道吗

如果您仍然不明白,我将编辑这篇文章,添加一个SQL示例来说明数据库的样子。你知道吗

(很抱歉,这本书不太好读,也不是一个很宽泛的解释Django如何处理事情的方法,但我试着做了简短的陈述。)

相关问题 更多 >

    热门问题