Python 显示错误:";[引用对象:partner_id-partner.id]”;对于函数返回

Python 显示错误:";[引用对象:partner_id-partner.id]”;对于函数返回,python,python-2.7,openerp,odoo-10,Python,Python 2.7,Openerp,Odoo 10,我在Odoo10中为按钮(通过SMS发送)向导操作创建了一个函数。在该函数中,当我在函数中返回值时,屏幕上会显示以下错误。我还在销售订单继承文件中定义按钮操作 操作无法完成,可能是由于以下原因: -删除:您可能正在尝试删除一条记录,而其他记录仍在引用该记录 -创建/更新:未正确设置必填字段 [引用对象:partner\u id-partner.id] 那么,我返回什么而不是代码 我的Python和XML代码如下: **Pythode Code:** import urllib2

我在Odoo10中为按钮(通过SMS发送)向导操作创建了一个函数。在该函数中,当我在函数中返回值时,屏幕上会显示以下错误。我还在销售订单继承文件中定义按钮操作

操作无法完成,可能是由于以下原因: -删除:您可能正在尝试删除一条记录,而其他记录仍在引用该记录 -创建/更新:未正确设置必填字段

[引用对象:partner\u id-partner.id]

那么,我返回什么而不是代码

我的Python和XML代码如下:

**Pythode Code:**

    import urllib2
    import cookielib
    from getpass import getpass
    import sys
    import os
    from stat import *

    class way2smsBase(models.Model):
        _name = "way.base"
        _rec_name = "user_name"

        user_name = fields.Char(string="UserName", required=True)
        password = fields.Char(string="Password", required=True)

    class SaleMail(models.TransientModel):
        _name = "sale.mail.wizard"
        _description = "Sale Mail Wizard"

        message = fields.Text(String="Message", size=140)
        number = fields.Text(string="Receiver Number", required=True, size=12)
        user_acc = fields.Many2one("way.base", 'ACC', required=True)
        date_time = fields.Datetime(string="Date & Time", readonly=True)

        def sendSms(self):
            url = 'http://sunarctechnologies.com'
            data = 'username=' + self.user_acc.user_name + '&password=' + self.user_acc.password + '&Submit=Sign+in'
            cj = cookielib.CookieJar()
            opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
            opener.addheaders = [('User-Agent',
                                  'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120')]
            try:
                usock = opener.open(url, data)
            except IOError:
                raise Warning(_("Error pls Check account or mobile number"))
            jession_id = str(cj).split('~')[1].split(' ')[0]
            send_sms_url = 'http://site24.way2sms.com/smstoss.action?'
            send_sms_data = 'ssaction=ss&Token=' + jession_id + '&mobile=' + self.number + '&message=' + self.message + '&msgLen=136'
            opener.addheaders = [('Referer', 'http://site25.way2sms.com/sendSMS?Token=' + jession_id)]
            try:
                sms_sent_page = opener.open(send_sms_url, send_sms_data)
            except IOError:
                raise Warning(_("Error pls Check account or mobile number"))
            self.date_time = str(datetime.now())
            raise Warning(_("Message Sent"))

        @api.one
        @api.constrains('number')
        def validatePhonenumber(self):
            for phone in self:
                if re.match("[0-9]", phone.number) == None:
                    raise Warning("Mobile number is not valid one, Please specify valid number")
                    return False
                return True

        @api.multi
        def action_mail_add(self):
            rec = self._context.get('active_ids', [])
            print "REC"
            if rec:
                line_values = {'message': self.message,
                               'number': self.number,
                               #'user_acc': self.user_acc,
                               #'date_time': self.date_time,
                               }
                print "Values:", line_values
                #return line_values
                return self.env['sale.order'].create(line_values)


**XML Code:**

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <record id="view_sale_mail_wizard" model="ir.ui.view">
            <field name="name">SaleMail</field>
            <field name="model">sale.mail.wizard</field>
            <field name="arch" type="xml">
                <form string="Sales mail">
                    <sheet>
                        <!--<separator string="SMS"/> -->
                        <group string="Way2SMS" style="width: 40%%" col="2" colspan="2">
                            <field name="user_acc"/>
                            <field name="number"/>
                            <field name="message"/>
                            <field name="date_time"/>
                        </group>
                    </sheet>
                    <footer>
                        <button name="action_mail_add" type="object" String="Ok"
                                class="oe_highlight" icon="fa-commenting-o" confirm="Are you sure want to send sms"
                                attrs="{'invisible':[('date_time','!=',False)]}"
                                help="this button will send an sms "/>
                        <button string="Cancel" class="btn-default" special="cancel"/>
                    </footer>
                </form>
            </field>
        </record>

        <record id="action_view_sale_mail_wizard" model="ir.actions.act_window">
            <field name="name">SaleMail</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">sale.mail.wizard</field>
            <field name="view_type">form</field>
            <field name="view_mode">form</field>
            <field name="target">new</field>
        </record>
    </data>
</openerp>

**XML Code in Sales Order Inherit File:**

<?xml version="1.0"?>
<openerp>
    <data>
        <record model="ir.ui.view" id="custom_order_form">
            <field name="inherit_id" ref="sale.view_order_form"/>
            <field name="name">Sale Order Pet Form</field>
            <field name="model">sale.order</field>
            <field name="arch" type="xml">
                <data>
                    <xpath expr="//button[@name='action_quotation_send']" position="after">
                        <button name="%(action_view_sale_mail_wizard)d" string="Send by SMS" type="action" class="btn-primary"/>
                    </xpath>
                </data>
            </field>
        </record>
    </data>
</openerp>
**Pythode代码:**
导入urllib2
进口cookielib
从getpass导入getpass
导入系统
导入操作系统
从统计导入*
类way2smsBase(models.Model):
_name=“way.base”
_rec_name=“user_name”
user\u name=fields.Char(string=“UserName”,required=True)
password=fields.Char(string=“password”,required=True)
SaleMail类(models.TransientModel):
_name=“sale.mail.wizard”
_description=“销售邮件向导”
message=fields.Text(String=“message”,size=140)
数字=字段。文本(string=“Receiver number”,required=True,size=12)
user_acc=fields.manyOne(“way.base”,“acc”,required=True)
date\u time=fields.Datetime(string=“date&time”,readonly=True)
def发送SMS(自我):
url='1〕http://sunarctechnologies.com'
数据='username='+self.user\u acc.user\u name+'&password='+self.user\u acc.password+'&Submit=Sign+in'
cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[('User-Agent',
'Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/37.0.2062.120']
尝试:
usock=opener.open(url、数据)
除IOError外:
提出警告(错误,请检查帐户或手机号码)
jession_id=str(cj).split(“~”)[1].split(“”)[0]
发送短信http://site24.way2sms.com/smstoss.action?'
发送短信数据='ssaction=ss&Token='+jession_id+'&mobile='+self.number+'&message='+self.message+'&msgLen=136'
opener.addheaders=[('Referer','http://site25.way2sms.com/sendSMS?Token=“+jession_id)]
尝试:
短信发送页面=开启器。打开(发送短信url,发送短信数据)
除IOError外:
提出警告(错误,请检查帐户或手机号码)
self.date\u time=str(datetime.now())
发出警告(uu(“消息已发送”))
@api.1
@api.Constraints('编号')
def validatePhonenumber(自):
对于手机内置:
如果重新匹配(“[0-9]”,则电话号码)=无:
提出警告(“手机号码无效,请指定有效号码”)
返回错误
返回真值
@api.multi
def操作\邮件\添加(自我):
rec=self.\u context.get('active\u id',[]))
打印“REC”
如果记录:
行_值={'message':self.message,
“number”:self.number,
#'user\u acc':self.user\u acc,
#“日期时间”:self.date\u时间,
}
打印“值:”,第_行值
#返回行_值
返回self.env['sale.order'].create(行值)
**XML代码:**
销售邮件
sale.mail.wizard
销售邮件
ir.actions.act\u窗口
sale.mail.wizard
形式
形式
新的
**销售订单继承文件中的XML代码:**
销售订单宠物表格
销售订单
我想这里的代码

    @api.multi
    def action_mail_add(self):
        rec = self._context.get('active_ids', [])
        print "REC"
        if rec:
            line_values = {'message': self.message,
                           'number': self.number,
                           #'user_acc': self.user_acc,
                           #'date_time': self.date_time,
                           }
            print "Values:", line_values
            #return line_values
            return self.env['sale.order'].create(line_values)

合作伙伴id是必填字段。此外,还有许多与partner id相关的字段。

是partner\u id是必填字段,我使用set partner\u id='1'完成此操作:

line_values = {'message': self.message,
                           'number': self.number, 
               'partner_id': 1,
                           #'user_acc': self.user_acc,
                           #'date_time': self.date_time,
                           }
            print "Values:", line_values
            #return line_values
            return self.env['sale.order'].create(line_values)

Yes Partner_id是必填字段,我使用以下命令完成此操作:line_values={'message':self.message,'number':self.number,'Partner_id':1,#'user_acc':self.user_acc,#'date_time':self.date_time,}print“value:”,行值#返回行值返回self.env['sale.order'].创建(行值)