«Обычный способ» отображения данных записи: нажмите кнопку меню, выберите запись в древовидном представлении, и вы увидите вид формы для этой конкретной записи.Показать форму существующего идентификатора после нажатия кнопки меню в odoo 8?
Поскольку у меня есть только одна запись, содержащая графики с высоким графиком, я бы пропустил древовидное представление и после нажатия кнопки меню хотел бы увидеть вид формы этой одной записи, что означает графики.
Я попытался определить только представление формы и отсутствие древовидного изображения, но при нажатии кнопки меню открывается новая запись вместо существующей. Я также искал эту проблему, но не нашел ничего полезного.
Так что любая помощь очень приветствуется. Возможно, есть и другие способы отображения данных/графиков без использования формы.
Вот код до сих пор:
menu.xml
<record model="ir.actions.act_window" id="statistics_action">
<field name="name">Total Data</field>
<field name="res_model">reminders.statistics</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('id', '=', 1)]</field>
</record>
<menuitem id="statistics_group" name="Statistics" parent="reminder.main_reminder_menu"/>
<menuitem id="total_data_menu" name="My Graph" parent="reminder.statistics_group" action="statistics_action"/>
statistics_view.xml (вид дерева, я хотел бы избежать/пропустить)
<record model="ir.ui.view" id="statistics_tree_view">
<field name="name">reminder_statistics.tree</field>
<field name="model">reminders.statistics</field>
<field name="arch" type="xml">
<tree edit="false" create="false" delete="false">
<field name="id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="statistics_form_view">
<field name="name">reminder_statistics.form</field>
<field name="model">reminders.statistics</field>
<field name="arch" type="xml">
<form edit="true" create="false" delete="false">
<group string="Title of some Graph">
<field name="some_graph" widget="charts_widget" nolabel="1" chart-type="stacked"/>
</group>
</form>
</field>
</record>
Каждый день выполняется задание cron, выполняющее этот метод для получения данных графиков:
reminder_statistics.py
class Stats(models.Model):
_name = 'reminders.statistics'
some_graph = fields.Text()
@api.one
def collect_stats_data(self):
data = some dictionary (may change every day)
graph_data = {
"title": {
"text": ""
},
"xAxis": {
"categories": [key for (key, value) in data.items()]
},
"yAxis": {
"title": {
"text": "Total Count"
}
},
"series": [{
"type": "column",
"name": "Total Count",
"data": [value for (key, value) in data.items()],
"dataLabels": {
"enabled": True,
}
},
],
"tooltip": {
"enabled": False
}
}
self.some_graph = json.dumps(graph_data)
Я использовал действие сервера, и он работает как шарм! Я думал об использовании действия сервера, но не знал, как его объединить с действием окна. Так что еще раз спасибо за ваш ответ и за то, что научили меня чему-то новому! – gve
'ValueError::" name 'self' не определен "при оценке'. Где мы можем получить это' self' здесь в поле зрения ... У меня есть модель 'xx.yy' и я попробовал 'model_xx_yy', потому что я определил модель в коде, я не могу получить ее внешний идентификатор. Просто попытался следовать вашему стилю –
Sami