我有两个模型,想要与它们建立关系。
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中的内联。
问候
答案 0 :(得分:0)
默认情况下会创建Django中的反向关系。
要获得ModelA,您将使用:
ModelA.objects.filter(modelb__pk = 1)
您可以在此处找到更多详细信息:
答案 1 :(得分:0)
Django ORM将首先保存ModelA,然后保存ModelB,以保持数据库中的数据完整性。
Django可以尝试在一个事务中保存多个项目,这样,如果你取消它,就不会保存任何内容,但这可以在shell或Python代码中实现。到目前为止,通过HTTP,您无法在多个查询中维护事务。
如果您需要将模型A显示为模型B的内联,则需要自定义管理界面,而不是新字段/模型。我不知道如何编写自定义管理窗口小部件。我在自定义编辑器视图中做了类似的事情。模板&的JavaScript。我将未保存的模型存储在request.session
。