创建要继承的空选择



我创建了一个父模型,它有一个Selection字段。这个模式必须从提供服务的类继承,所以在子类中我使用字段。Selection(Selection\uadd=….(。是否可以在父类中创建一个";"空";将只填充继承它的模型的选择字段的选择?Ex

class GenericService(models.Model):
_name = 'generic.service'
selection_type = fields.Selection(
[('select_type', _("Select an Account")),],default='select_type',                                                                                                                                                                                                                                              
string=_("Service Type"),                                         
required=True   
class SpecificService(model.Model):
_inherit = 'generic.service'
selection_type = fields.Selection(
selection_add=[('sftp','SFTP')],
)

我想避免在通用模型选择上添加默认字段,我的选择是创建一个控制插入的方法,但我想知道是否可以避免。

如果您像那样继承_inherit而不使用_name。然后您只得到一个型号的generic.service和所有的selection_add=[]添加的选择。

如果添加

class GenericService(models.Model):
_name = 'generic.service'
selection_types = fields.Selection([], string="Service Type")

class SpecificServiceA(model.Model):
_inherit = 'generic.service'
selection_type = fields.Selection(
selection_add=[('sftp','SFTP')], required=True
)
class SpecificServiceB(model.Model):
_inherit = 'generic.service'
selection_type = fields.Selection(
selection_add=[('https','HTTPS')], required=True
)

你最终得到了名为"generic.service"的型号和选择[('sftp','SFTP'), ('https','HTTPS')]

我相信字符串和选择名称会自动添加到翻译列表中。无需_()

您还可以使用Odoo的mixin功能,它有点像抽象类型/类。根据您的需求,举一个例子:

class ServiceMixin(models.AbstractModel):
_name = "service.mixin"

def _get_type_selection(self):
""" Returns a 2-tuple list for type_selection field

Meant to be extended by inheriting models."""
return []

type_selection = fields.Selection(
selection="_get_type_selection", string="Type")
class ServiceA(models.Model):
_name = "service.a"
_inherit = ["service.mixin"]

def _get_type_selection(self):
""" Returns a 2-tuple list for type_selection field"""
return [('a', 'A'), ('b', 'B')]
class ServiceB(models.Model):
_name = "service.b"
_inherit = ["service.mixin"]

def _get_type_selection(self):
""" Returns a 2-tuple list for type_selection field"""
return [('a', 'A'), ('c', 'C')]

在将导致两个新表的数据库中:service_aservice_b。所以你有两款新的奥多奥车型,它们并不相互依赖。

相关内容

  • 没有找到相关文章

最新更新