django - 我应该如何在 django 中使用实例列表
问题描述
我正在尝试在 django 中使用某种对象列表。
所以我有不同的数据库条目:
class A(models.Model):
name = models.CharField(max_length=250)
我想将这些数据库条目与其他数据库条目链接起来
class B(models.Model):
name = models.CharField(max_length=250)
list<A> = ???
我通常会在 B 类中存储 A 类实例的列表,但是在 django 中?A 类的每个实例在数据库中都有一个 ID。因此,您必须为 B 类的每个实例创建一个表,这些 A 类的 ID 存储在其行中。但是我该怎么做呢?
有人可以给我看一个简单的例子吗?
谢谢
编辑添加:好的,抱歉问题被问错了。我的意思如下:我bla = models.ManyToManyField ('A')
在 B 中有一个 manytomany 字段。我现在如何在视图中添加数据:
a = get_object_or_404 (A, id = request.POST.get ('a_id'))
b = get_object_or_404 (B, id = request.POST.get ('b_id'))
b.bla.add (a)
b.save ()
不起作用(打印(a)和打印(b)已更正)
解决方案
答案取决于您计划的关系将是什么。可以B
关联多A
条记录吗?如果是,那么您可能想要使用多对多字段:
class B(models.Model):
name = models.CharField(max_length=250)
publications = models.ManyToManyField(A)
如果每个B
只能与单个相关,A
那么您的选择可能是外键:
class B(models.Model):
name = models.CharField(max_length=250)
publications = models.ForeignKey(A, on_delete=models.CASCADE)
在这两种情况下,您都可以使用查询来获取相关对象的列表。
但是您实际上不能以这种方式简单地定义一个数组字段并B
在其中放置实例(问这个问题 - 它们将如何存储在 DB 中?)。如果您使用的是 PostgreSQL,您实际上可能会使用一个数组字段并将A
id 存储在那里。
推荐阅读
- python - BeautifulSoup 找不到标签(区分大小写/不区分大小写的问题)
- javascript - 当我们将文件拖放到 dropzone 区域时,React Dropzone 样式不采用
- google-apps-script - 从单元格值更新字符串
- python - Python回调输入变量
- reactjs - 反应表格行选择
- javascript - 行未处理的表达式:
- reactjs - 打开React Modal改变MDBDataTable的排序顺序
- r - 使用 as.POSIXct 过滤日期数据的 R dplyr 错误
- node.js - 是否有可能拥有一个 Apollo 服务器,为同一个应用程序提供 React 客户端?
- facebook - Graph API Facebook SDK for PHP 权限错误