如何使一个二元关系不重复? openerp 7

时间:2015-11-12 14:54:13

标签: python-2.7 openerp openerp-7

所以......假设我有上课" person"和"颜色"。如果一个人如何做到这一点 颜色分配给某人......不能分配给其他人

class person(osv.Model):
    _name = 'person'

    _columns = {            
            'name': fields.char('Person', size=50, help="Persona"), 
            'color_p : fields.one2one('colors','Color'),
                }
person()

class colors(osv.Model):
    _name = 'colors'

    _columns = {            
            'name': fields.char('Color', size=50, help="Color"),           
                }
colors()

2 个答案:

答案 0 :(得分:0)

对于OpenERP 7,您可以尝试使用_inherits(例如参见http://dirtyhandsphp.blogspot.in/2014/10/openerp-one2one-relational-field-example.html)。

但是,我过去需要建立一个单一的关系,而这个解决方案并不像我预期的那样成功。可能你觉得不一样;)

答案 1 :(得分:0)

如果您有2个模型,并且想要创建一个one2one关系:

type Sorter[Item] = (Item, Item) => Boolean

def customSorter(map: Map[String, Int]): Sorter[String] = { (s1, s2) =>
  (map.get(s1), map.get(s2)) match {
    case (Some(i1), Some(i2)) => i1 < i2
    case _                    => s1 < s2
  }
}

这将使魔术成真!现在,您可以在service_example模型中使用one2one关系中的任何字段:

class ServiceLine(models.Model):
    _name = "service.line"

    title = fields.Char(string='Title')
    service_cost = fields.Float(string='Cost', track_visibility='onchange')


class ServiceExample(models.Model):
    _name = "service.example"

    _description = "My Awesome Singular Service Example"

    _inherits = {
        'service.line': 'service_line_id',
    }

    service_line_id = fields.Many2one(
        'service.line', string='Service Line ID', required=True, ondelete='cascade', unique=True, auto_join=True
    )

    service_example_details = fields.Char(string='Details', track_visibility='onchange')