我有一个类Assembly
Django的多对多场通过使用额外字段不会对双方关系显示
class Assembly(models.Model):
room = models.ForeignKey("Room", related_name="assemblies")
name = models.CharField(max_length=200)
number = models.IntegerField()
position = models.CharField(max_length=200, blank=True)
components = models.ManyToManyField("material.Component", through="m2m_Assembly_Components")
connections = models.ManyToManyField("Assembly", through="Connection")
category = models.ForeignKey("Category", default=0)
notes = models.TextField(blank=True)
具有的本身(connections
)实例之间的多对多Realtionship。 我使用中间表Connection
,这样我就可以在Assembly
的两个实例之间建立连接。
class Connection(models.Model):
source = models.ForeignKey("Assembly", related_name="source_assembly", null=True)
destination = models.ForeignKey("Assembly", related_name="destination_assembly", null=True)
length = models.IntegerField(null=True, blank=True)
如果我有两个组件,可以说A和B,和我通过定义一个与源和B作为目的地的新连接将它们连接起来,我得到B,为的连接(A.connections.all()
),但我不A不会成为B的联系人。
如果我不使用中间表,只需要一个models.ManyToManyField("Assembly")
我得到A作为B的连接,B作为A的连接。
这是什么问题?
嗯..没有指定related_name,你有没有试过'assembly_set从B的一面来看? – schwobaseggl
如果我没有指定一个related_name,我得到一个错误(不记得它是什么),因为我使用了两次相同的ForeignKey。 – Bouni