ValueError 预期单例

ValueError Expected singleton

class Aveant(models.Model):
_name=  'facturation.avenant'
_description    =   'Avenant'
contrat_id  =   fields.Many2one('facturation.contrat')
travSup_ids = fields.One2many('facturation.travsup','attachment_id',compute='display_trav')


@api.multi
@api.onchange('contrat_id')
def display_trav(self):

    if self.contrat_id:

        attachements=self.env["facturation.attachement"].search([('contrat_id','=',self.contrat_id.id)])

        print attachements.id
        trv=self.env["facturation.travsup"].search([('attachment_id','=',attachements.id)])
        print trv
        for obj in self:
            obj.travSup_ids = trv

如何更正此错误:预期的单例:facturation.attachement(3, 4, 6, 7)

代码xml:

 <field name="travSup_ids">
<tree editable="True">
    <field name="ouvrage_id"/>
    <field name="article_id"/>
    </tree>         
</field>

如何在视图中显示???

您使用 attachements.id 因为它是一个值,但可能使用此代码

self.env["facturation.attachement"].search([('contrat_id','=',self.contrat_id.id)])

你得到了更多的对象。我认为你应该使用 '==' 而不是 '=' :

self.env["facturation.attachement"].search([('contrat_id','==',self.contrat_id.id)])

您在 attachements 变量中获得了多个记录集。所以你可以尝试用下面的代码来解决它。

trv = self.env["facturation.travsup"].search(
    [('attachment_id','in',attachements.ids)])