Ir al contenido
Menú
Se marcó esta pregunta
3 Respuestas
6707 Vistas

I have selection fields defined as below, but the output have extra quotes in option values which will raise ValueError("Wrong value for %s: %r" % (self, value)) when selecting. Anyone knows how to remove those extra quotes? Thanks!

Definitions:

_columns = {
        'name' : fields.char('Name', compute='_compute_name', required=1, store=1, default=''),
        'x_material': fields.selection([
            ('ASTM A105','ASTM A105'),
            ('ASTM A350 LF2 CL1','ASTM A350 LF2 CL1'),
            ('ASTM A182 F304','ASTM A182 F304'),
            ('ASTM A182 F304L','ASTM A182 F304L'),
            ('ASTM A182 F316','ASTM A182 F316'),
            ('ASTM A182 F316L','ASTM A182 F316L')
            ],'Mateirial', required=0),
        'x_surface_condition': fields.selection([
            ('blank','Blank'),
            ('finished','Finished Product')
            ], 'Surface Condition', required=0),        
        'x_heat_number': fields.char(string='Heat Number', required=0),
        'x_standard': fields.selection(selection=[], string='Standards', required=1),
        'x_pressure': fields.selection(selection=[], string='Pressure', required=1),
        'x_type': fields.selection(selection=[], string='Type', required=1),
        'x_facing': fields.selection(selection=[], string='Facing', required=1),
        'x_size': fields.selection(selection=[], string='Size (mm)', required=1),
        'x_weight': fields.selection(selection=[], string='Unit Weight (kg)', required=1),
        'x_wall_thickness': fields.selection(selection=[], string='Wall Thickness', required=0),
        'x_long': fields.selection(selection=[], string='Height (mm)', required=0),
    }
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):         
        if context is None:context = {} res = super(product_flange, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False) for field in res['fields']: if field in ['x_standard','x_pressure','x_type','x_facing','x_size']: cr.execute("SELECT DISTINCT "+field+" FROM product_ftype WHERE "+field+" <> '' ORDER BY "+field+" ASC") res['fields'][field]['selection'] = [(r[0], r[0]) for r in cr.fetchall()] return res.


Outputs:

<select id="oe-field-input-5" name="x_standard">
                <option value="false"></option>
                <option value=""ASME B16.47-A"">ASME B16.47-A</option>
                <option value=""ASME B16.47-B"">ASME B16.47-B</option>
                <option value=""ASME B16.5"">ASME B16.5</option>
                <option value=""EN1092-1"">EN1092-1</option>
</select>

Avatar
Descartar

Double quotes seems like intended behavior and can also be seen on selection fields of core modules. Can you post the whole stack trace for that error?

Autor

Here it is~ Odoo Server Error Traceback (most recent call last): File "E:\work\flangewarehouse.com\odoo\openerp\http.py", line 530, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "E:\work\flangewarehouse.com\odoo\openerp\http.py", line 567, in dispatch result = self._call_function(**self.params) File "E:\work\flangewarehouse.com\odoo\openerp\http.py", line 303, in _call_function return checked_call(self.db, *args, **kwargs) File "E:\work\flangewarehouse.com\odoo\openerp\service\model.py", line 113, in wrapper return f(dbname, *args, **kwargs) File "E:\work\flangewarehouse.com\odoo\openerp\http.py", line 300, in checked_call return self.endpoint(*a, **kw) File "E:\work\flangewarehouse.com\odoo\openerp\http.py", line 796, in __call__ return self.method(*args, **kw) File "E:\work\flangewarehouse.com\odoo\openerp\http.py", line 396, in response_wrap response = f(*args, **kw) File "E:\work\flangewarehouse.com\odoo\openerp\addons\web\controllers\main.py", line 949, in call_kw return self._call_kw(model, method, args, kwargs) File "E:\work\flangewarehouse.com\odoo\openerp\addons\web\controllers\main.py", line 941, in _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) File "E:\work\flangewarehouse.com\odoo\openerp\api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "E:\work\flangewarehouse.com\odoo\openerp\api.py", line 363, in old_api result = method(recs, *args, **kwargs) File "E:\work\flangewarehouse.com\odoo\openerp\models.py", line 5775, in onchange record = self.new(values) File "E:\work\flangewarehouse.com\odoo\openerp\api.py", line 239, in wrapper return new_api(self, *args, **kwargs) File "E:\work\flangewarehouse.com\odoo\openerp\models.py", line 5368, in new record._cache.update(record._convert_to_cache(values, update=True)) File "E:\work\flangewarehouse.com\odoo\openerp\models.py", line 5267, in _convert_to_cache for name, value in values.iteritems() File "E:\work\flangewarehouse.com\odoo\openerp\models.py", line 5268, in if name in fields File "E:\work\flangewarehouse.com\odoo\openerp\fields.py", line 1323, in convert_to_cache raise ValueError("Wrong value for %s: %r" % (self, value)) ValueError: Wrong value for product.flange.x_standard: 'ASME B16.47-A'

Mejor respuesta

This is a late reply but i guess it might be useful for other.

This is a problem cause by unicode so to resolve it, just tell the system that you are using unicode text in selection field by using 'u'. Here is the example :

_columns = {        
'selection_field':fields.selection([(u'សំរាប់ក្រសួង', u'សំរាប់ក្រសួង'),(u'សំរាប់និស្សិត', u'សំរាប់និស្សិត')], 'Template Type')
}
Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
4
dic 23
22305
5
jul 24
15670
1
jun 22
27190
9
may 22
53441
0
jul 20
2995