技巧一 Many2many 类型的反向关联
我们知道对于One2many类型的字段,我们要创建目标对象的一个目标字段作为反向关联,以方便我们在目标对象中对源对象进行引用。
class A(models.Model):
_name = "A"
field1 = fields.One2many("B","p_id",string="字段1")
class B(models.Model):
_name = "B"
p_id = fields.Many2one("A",string="PID")
那么,对于Many2many类型的字段,我们是否也可以在目标对象中建立反向关联字段呢?
答案是肯定的,但是不同于One2many,我们需要通过一中稍微曲线一些的方式进行。我们知道Many2many字段的第二、三、四个参数分别对应关系表、源对象的字段和目标对象的字段。
我们建里反向字段的方法就是在目标对象中建立一个回溯的字段,使用相同的表名,把关联字段顺序颠倒即可。
class A(models.Model):
_name = "A"
field1 = fields.Many2many("B","a_b_rel","a","b",string="字段1")
class B(models.Model):
_name = "B"
field2 = fields.Many2one("A","a_b_rel","b","a",string="字段2")