0

我有两个模型并想与它们建立关系。

class ModelA(models.Model):
  id   = models.IntegerField(primary_key=True) # DB => PK, AI, NN
  name = models.CharField(max_length=50)
  ...

class ModelB(models.Model):
  modelA = models.OneToOneField("ModelA", primary_key=True)
  description = models.CharField(max_length=255)
  ...

所以我有两个模型之间的关系。是否可以向 ModelA 添加一个成员,该成员存储与 ModelB 的关系而不将此关系保存到数据库?

我将其称为动态创建的关系或其他东西。任何提示或建议如何让两个模型相互了解?

我认为如果一个模型上的关系可以动态完成,那将是有益的。否则我会在存储模型时遇到一些麻烦,因为如果我保存其中一个模型,则不会存储其中一个 ID。

我想在两个模型上都有关系,这样我就可以轻松地将模型用作 django-admin 中的内联模型。

问候

4

2 回答 2

0

Django ORM 将首先保存 ModelA,然后是 ModelB,以维护 DB 中的数据完整性。

Django 可以尝试在一个事务中保存多个项目,这样,如果您取消它,则不会保存任何内容,但这在 shell 或 Python 代码中是可能的。到目前为止,您无法通过 HTTP 维护多个查询的事务。

如果您需要将模型 A 显示为模型 B 的内联,则需要自定义管理界面,而不是新字段/模型。我不知道如何编写自定义管理小部件。我确实对自定义编辑器视图、模板和 Javascript 做了类似的事情。我将未保存的模型存储在request.session.

于 2012-09-17T09:42:22.860 回答
0

Django 中的反向关系是默认创建的。

要获得 ModelA,您将使用:

ModelA.objects.filter(modelb__pk = 1)

您将在此处找到更多详细信息:

https://docs.djangoproject.com/en/dev/topics/db/queries/

于 2012-09-17T09:14:22.637 回答