首页 > 解决方案 > ValueError 预期的单例 many2many 字段

问题描述

professor class

{# - - 编码:utf-8 - - from odoo import fields, models, api from datetime import datetime

class GiProfesseur(models.Model):
    _name = "gi.professeur"
    _inherit = ['mail.thread']
    _description = "Professeur du département de Genie Industriel"
    _rec_name = 'combination'

    nom = fields.Char(string='Nom', required=True)
    prenom = fields.Char(string='Prenom', required=True)
    numero_de_carte_nationale = fields.Char(string='Numéro de carte nationale',     required=True)
    sexe = fields.Selection([('Masculin','Masculin'),('Féminin','Féminin')], required=True)
    date_de_naissance = fields.Date('Date de naissance' , required=True)
    Wilaya_de_residence = fields.Char(string='Wilaya de naissance', required=True)
    adresse = fields.Text(string='Adresse')
    specialite = fields.Many2many('gi.specialite', string="Spécialité", required=True)
    classroom = fields.Many2many('gi.classroom', string="Groupe")
    grade = fields.Char(string='Grade',)
    position = fields.Text(string='Position')
    date_recruitment = fields.Date("Date de recruitment", required=True, readonly=True, default=datetime.now().date())
    adresse_Email = fields.Text(string='Adresse E-mail', required=True)
    telephone = fields.Char(string='Téléphone', required=True)
    image = fields.Binary(string='Image')
    combination = fields.Char(string='Combination', compute='_compute_fields_combination')

    @api.depends('nom', 'prenom')
    def _compute_fields_combination(self):
        for Professeur in self:
            Professeur.combination = Professeur.nom + ' ' + Professeur.prenom}


classroom class

{# - - 编码:utf-8 - - from odoo import fields, models, api , _

class GiClass(models.Model):
    _name = "gi.classroom"
    _inherit = ['mail.thread']
    _description = "les classroom du département de Genie Industriel"
    _rec_name = 'nom'

    nom = fields.Char(string='Code du grupe', required=True)
    etudiants = fields.One2many('gi.etudiant', 'classroom', string='Etudiants')
    professeurs = fields.One2many('gi.professeur', 'classroom', string='Professeurs')
    cours = fields.One2many('gi.cours', 'classroom', string='Etudiants')
    examens = fields.One2many('gi.cours', 'classroom', string='Examens')
    num = fields.Char(string='Numéro du classroom', required=True)}

当我在教授课上增加两三个教室时

classroom = fields.Many2many('gi.classroom', string="Groupe")

我收到这个错误

ValueError: Expected singleton: gi.classroom(12, 13)

标签: pythonsingletonodoo-14

解决方案


在您的gi.professeur模型中:您希望与gi.classroom.

但是在您的gi.classroom模型中:您与gi.professeur.


为了使其保持一致,您要么必须更改

professeurs = fields.One2many('gi.professeur', 'classroom', string='Professeurs')


professeurs = fields.Many2many('gi.professeur', 'classroom', string='Professeurs')

在你的gi.classroom模型中。

或者

改变

classroom = fields.Many2many('gi.classroom', string="Groupe")

classroom = fields.Many2one('gi.classroom', string="Groupe")

在你的gi.professeur模型中。

Tl;DR

你必须使gi.classroomgi.professeur关系保持一致。


推荐阅读