我有一個類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