【问题标题】:TypeError: must be str, not mail.mass_mailing.listTypeError:必须是 str,而不是 mail.mass_mailing.list
【发布时间】:2020-05-22 12:15:52
【问题描述】:

我正在 Odoo 上制作一个模块,用于从邮件列表发送短信。 我已经运行了这段代码,但我有一个错误。

contact_list_ids = fields.Many2many('mail.mass_mailing.list', 'phone_number', string='Liste de diffusion')

messages_sms = fields.Text(string="message", required=True)

# send SMS with GET method
@api.multi
def send_sms(self):
    for list in self.contact_list_ids:
        for contact in list:
            final_url = (
                URL +
                '&to=' +contact +
                '&sms=' + self.messages_sms
                 )
            r = requests.get(final_url)
            if not r:
                return ERROR_API
            return r.text

错误:

文件“c:\program files (x86)\odoo 12.0\server\addons\KeoMarketing\models\messages_sms.py”,第 36 行,在 send_sms '&sms=' + self.messages_sms TypeError: 必须是 str,而不是 mail.mass_mailing.list

【问题讨论】:

  • 你在哪一行得到这个错误?
  • 在这一行:'&sms=' + self.messages_sms
  • 错误提示 self.message_sms 是一个列表,而不是单个 str 值。试试print(type(self.messages_sms)) 看看这是不是真的。确保 self.messages_sms 是一个 str 而不是一个列表...
  • 是的。我认为导致错误的原因是我的 many2many 字段

标签: python xml odoo


【解决方案1】:

您遇到类型错误,因为您无法将 str 与 mail.mass_mailing.list 记录连接起来。

'&to=' + contact

尝试传递电话号码(或用于存储电话号码的任何字段):

'&to=' + contact.phone_number

您可以查看以下Twilio 示例:

from twilio.rest import Client


class CustomClass(models.Model):   

    contact_list_ids = fields.Many2many('mail.mass_mailing.list', 'phone_number', string='Liste de diffusion')

    messages_sms = fields.Text(string="message", required=True)

    @api.multi
    def send_sms(self):
        self.ensure_one()
        account_sid = ''
        auth_token = ''
        client = Client(account_sid, auth_token)
        for list in self.contact_list_ids:
            for contact in list.contact_ids:
                client.messages \
                    .create(
                    body=self.messages_sms,
                    from_=self.env.user.partner_id.mobile,
                    status_callback='http://postb.in/1234abcd',
                    to=contact.phone_number
                )


class MailMassMailingContact(models.Model):
    _inherit = 'mail.mass_mailing.contact'

    phone_number = fields.Char()
  • 用于发送短信的电话号码存储在当前用户的相关伙伴中

  • 我继承mail.mass_mailing.contact为每个联系人添加电话号码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多