关于Django中的ManyToManyFields

时间:2015-03-09 07:18:41

标签: django django-models manytomanyfield

假设我制作了一个模型:

class A(models.Model):
       col = models.ManyToManyField(B)

现在迁移后,这将创建一个包含字段id,A_id,B_id的表A_B。 现在,如果我想访问表A_B的id,该怎么做?以及如何更新此表的B_id?

2 个答案:

答案 0 :(得分:1)

您正在寻找Through Relationships

class A(models.Model):
       col = models.ManyToManyField(B, through='C')

class C(models.Model):
      a = models.ForeignKey(A)
      b = models.ForeignKey(B)
      //any other extra field

然后您可以过滤或查询C表。

例如,要打印所有C个实例id

for c in C.objects.all():
     print c.id

答案 1 :(得分:1)

如果您有A:

的对象
A_obj.col.all()

这将返回与该A

相关的所有A_B对象
for ab in A_obj.col.all():
   print ab.id

这将打印表A_B的所有ID。

for ab in A_obj.col.all():
    ab.B_id = new id
    ab.save()

这将使用新ID更新您的B_id。