【问题标题】:ValueError: invalid literal for int() with base 10 with odooValueError: int() 的无效文字,以 10 为底,带有 odoo
【发布时间】:2019-02-20 00:58:10
【问题描述】:

我在表单中有一个日期字段,允许用户输入一个可能是任务截止日期的日期,我希望今天与截止日期和关注点有所不同: 1.如果日期已过,则显示“逾期” 2.如果没有,则显示给定日期的剩余天数,并添加文字说“剩下的日子是{%results of different days%}” 哪种字段类型可以用文本聚合整数

from odoo import models, fields
from odoo import api
from datetime import datetime


class todotask(models.Model):
    _name='todo.task'
    _description='to manage your job tasks'

    name=fields.Char('Description', required=True)
    gov_deprt_id=fields.Many2many('res.partner',string='Gov 
                 Department')
    company=fields.Many2one('res.partner',
            string='Work For')
    start_date=fields.Date('Start Date')
    deadline_date=fields.Date('Deadline')
    is_done=fields.Boolean('Done?')
    note=fields.Text('Note')
    amount=fields.Float('Cost Amount')
    remaining_days=fields.Integer(string="Remaining Days")

@api.onchange('start_date', 'deadline_date', 'remaining_days')

def calculate_date(self):
     while self.start_date and self.deadline_date:
        d1 = datetime.strptime(str(self.start_date), '%Y-%m-%d')
        d2 = datetime.strptime(str(self.deadline_date), '%Y-%m-%d')
        d3 = d2 - d1
        self.remaining_days ="{} and {}".format("tttt", str(d3.days))

【问题讨论】:

  • 尝试使用 int(d3.days) 而不是 str(d3.days)。如果不起作用,您应该按照@travisw 在他的回答中所说的去做。

标签: python-3.x odoo-12


【解决方案1】:

您正在为Integer 字段分配一个字符串值。将 remaining_days 更改为 Char 字段,您不会遇到问题。

remaining_days = fields.Char(string="Remaining Days")

【讨论】:

    猜你喜欢
    • 2018-09-09
    • 2020-01-04
    • 2010-12-22
    • 2011-07-07
    • 2019-10-14
    • 2022-05-19
    相关资源
    最近更新 更多