python - 显示错误: "[object with reference: partner_id - partner.id] " for function return

标签 python python-2.7 odoo odoo-10

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

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

[带有引用的对象:partner_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>

最佳答案

我认为代码在这里

    @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)

partner_id 是必填字段。并且与合作伙伴 ID 相关的字段也很多。

关于python - 显示错误: "[object with reference: partner_id - partner.id] " for function return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46486174/

相关文章:

python - 按列读取文本文件并存储在 python 的列表中

python - 无法从 python 发送带有附件的电子邮件?

odoo - Odoo中如何通过id获取之前的数据或者最新的数据?

javascript - Odoo POS 收据需要在收据中添加来自 res.partner city 的地址

python - PyCall import ("numpy") 产生 MKL FATAL ERROR

python - matplotlib 布局类似于手动绘制

python .format 包括浮点格式

python - python列表和字典可以无限嵌套吗?

odoo - 报告 odoo 12 中的问题

python - 如何从 Python 中的字符串中删除\xa0?