跳至内容
菜单
此问题已终结
4 回复
37547 查看

Hi everyone,

I am feeling kind of stupid, but nevertheless here is my problem:

I defined a model class:

models.py

class MealType(models.Model):
_name = 'event_participation.meal_type'

name = fields.Char(string="Name", required=True)
event_id = fields.Many2one('event.event', string="Event")
cost = fields.Float(string="Additional Cost")

def get_all_meal_types(self):
return self.search([])

Now I have a controller in which I want to get all MealType records from the database to display them.

controllers.py

import models

class ExtendedSaleController(main.website_sale):

def checkout_values(self, data=None):
if not data:
cr, uid, context, registry = request.cr, request.uid, request.context, request.registry
values = super(ExtendedSaleController, self).checkout_values()


#retrieve meal types

values["meals"] = meals

      return values

I tried several things to get the entries but nothing worked:

meal = models.MealType()
meals = models.MealType.get_all_meal_types(self)
meals = models.MealType.search([])
meals = meal.search([])  

 What am I missing?

Thanks for your help!

形象
丢弃
最佳答案

From within a controller, you can access ORM models using http.request.env

In your case:

MealType = http.request.env['event_participation.meal_type']
mealtypes = MealType.search([])

See the website tutorial

形象
丢弃
最佳答案

The thing is that in controllers you access the models and their methods using the registry like self.pool in the old api.

形象
丢弃
最佳答案

Hi,

you can manage those data as like below into your controller.


def checkout_values(self, data=None):

if not data:

cr, uid, context, registry = request.cr, request.uid, request.context, request.registry

values = super(ExtendedSaleController, self).checkout_values()

#retrieve meal types

values["meals"] =registry['event_participation.meal_type'].search([])

return values

形象
丢弃
编写者 最佳答案

Solution:

orm_meals = registry.get('event_participation.meal_type') 

get the IDs of all MealType records:

meal_ids = orm_meals.search(cr, SUPERUSER_ID, [], context=context) 

and get the complete records as objects:

meals = orm_meals.browse(cr, SUPERUSER_ID, meal_ids, context) 



形象
丢弃

should I declare 'registry'? if, yes, how? , i'll appreciate your answer, thanks in advance. I have the same problem in the above question

相关帖文 回复 查看 活动
2
7月 24
2542
0
9月 19
3404
1
10月 20
12443
1
6月 15
18108
1
3月 15
4939