我创建了一个关系one2many / many2one:
class dev_person(Model):
_name = "dev.person"
_description = "Person"
_columns = {
'name': fields.char('Person', size=128, required=True),
'properties': fields.many2one('dev.property', 'property_id', select=True),
}
class dev_property(Model):
_name = "dev.property"
_description = "Property"
_columns = {
'name': fields.char('Property', size=128, required=True),
'property_id': fields.one2many('dev.person', 'properties'),
}
我希望一个dev_person记录只能与一个dev_property链接,但事实并非如此。我能够创建具有相同名称和不同属性的两个人记录,我不会那样......
答案 0 :(得分:1)
你的帖子令人困惑。查看您的模型,一个dev_person
记录确实只能与一个dev_property
相关联。同时,您确实能够创建具有相同名称和不同属性的两个人记录。 - 这与many2one关系无关。如果您创建两个具有相同名称的人,则他们仍然是两个完全不同的dev_person
个对象。他们不是同一个人。当然,您可以将它们与不同的dev_property
s。
如果要阻止此操作,请声明name
字段唯一。这样你就无法创造出两个同名的人(确保这确实是你想要的,因为在现实生活中有不同的人有相同的名字)。
class dev_person(Model):
_name = "dev.person"
_description = "Person"
_columns = {
'name': fields.char('Person', size=128, required=True),
'properties': fields.many2one('dev.property', 'property_id', select=True),
}
_sql_constraints = [
(
'dev_person_name_uniq',
'unique(name)',
"You can't have two people with the same name!",
),
]
答案 1 :(得分:1)
从你的问题我明白,你想要人和财产。每个人都必须拥有一处房产。没有两个人可以拥有相同的名字。
令人困惑的部分是: -
如果您打算查看与此属性相关联的人员,则可以使用one2many功能字段。
为此,请尝试以下代码: -
$data = array(
'title'=>$title,
'description'=>$des
);
$this->db->insert('page',$data);
$page_id = $this->db->insert_id();
//To pass page_id to url column
$this->db->where('page_id', $page_id);
$data_1 = array('url'=>'page/view/'.$pageid);
$this->db->update('page', $data_1);
希望这有帮助。