Использование домена с датой и временем - PullRequest
0 голосов
/ 06 июня 2018

Привет. Я пытаюсь отфильтровать модель, используя домен, подобный этому.

class TableOne(models.Model):
    _name = "table.one"

    date = fields.Datetime(string="Date", default=fields.Datetime.now)

class ReportOne(models.Model):
    _name = "report.one"

    date_from = fields.Date(string="From")

    date_to = fields.Date(string="To")

    def do_some_filtering(self, date_from, date_to):
        table_one = self.env["table.one"]

        domain = []
        domain.append(("date", ">=", date_from ))
        domain.append(("date", "<=", date_to ))

        recs = table_one.search(domain) // zero results, even though the date_from / date_to range is inside the date spread

<record id="some_view_id" model="ir.ui.view">
    <field name="name">some.view.name</field>
    <field name="model">report.one</field>
    <field name="arch" type="xml">
        <form create="false">
            <sheet>
                <div class="container-fluid">
                    <div class="row">
                        <div class="col-md-6">
                            <group string="Date Range">
                                <field name="date_from" />
                                <field name="date_to" />
                            </group>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-12">
                            <button string="Create" type="object" name="do_some_filtering" />
                        </div>
                    </div>
                </div>
            </sheet>
        </form>
    </field>
</record>

Я пытался использовать strptime, strftime, не повезло.Как выполняется фильтрация даты / времени в Odoo?

Я включил код просмотра.Я очень сожалею, что это еще не полный код.Я должен удалить ненужные коды, которые не связаны с проблемой.Потому что, если я включу весь код, это будет очень длинный пример кода.Я чувствую, что этого достаточно, чтобы понять проблему.Пожалуйста, дайте мне знать, если вы все еще не можете понять это.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

то, что вы здесь делаете, не имеет никакого смысла, в этой точке выполнения все поля пусты False или объект.

Этот поиск выполняется, пока вы выполняете оператор класса, поэтому, если вы непосредственно обращаетесь к атрибуту, вы получаете False или объект класса datetime, который не похож на стандартный datetime labrary.

Вы можете подтвердить сказанное, напечатав оба значения поля перед поиском.Что вы хотите именно в этот момент, мы можем помочь переписать ваш код.

Изменения *

Даты в Odoo являются текстом.Вы используете поле Date для поиска даты и времени, я думаю, что Odoo объединит «00:00:00» с вашим значением.Если вы выберете ту же дату, всегда будет иметь запись, которая датирована точно в hout 00:00:00.

Вы можете изменить свое значение

      [....     '=>',  self.from_date + ' 00:00:00'),
             ...., self.to_date + ' 23:59:59')] 

И имейте в виду, что odoo имеет дело с часовым поясомскажем, что ваш регион GMT + 1, ЕСЛИ вы выберете 2018-01-01 00:00:00 в базе данных, то значение будет преобразовано в 2017-12-31 23:00:00. Будьте внимательны с этими фактами. Odoo - это международная система, и Odoo управляет датами на этой основе.

0 голосов
/ 06 июня 2018

Здесь есть несовместимый поиск с date object и datetime object.поэтому вы должны сделать date_from и date_to в поле datetime и ввести их в одном формате.еще поле даты + 00.0000.00 в соответствии с форматом будет добавлено с поиском, и вы получите []

...