Skip to Content
Odoo Menu
  • Log ind
  • Prøv gratis
  • apps
    Økonomi
    • Bogføring
    • Fakturering
    • Udgifter
    • Regneark (BI)
    • Dokumenter
    • e-Signatur
    Salg
    • CRM
    • Salg
    • POS Butik
    • POS Restaurant
    • Abonnementer
    • Udlejning
    Hjemmeside
    • Hjemmesidebygger
    • e-Handel
    • Blog
    • Forum
    • LiveChat
    • e-Læring
    Forsyningskæde
    • Lagerbeholdning
    • Produktion
    • PLM
    • Indkøb
    • Vedligeholdelse
    • Kvalitet
    HR
    • Medarbejdere
    • Rekruttering
    • Fravær
    • Medarbejdersamtaler
    • Anbefalinger
    • Flåde
    Marketing
    • Markedsføring på sociale medier
    • E-mailmarketing
    • SMS-marketing
    • Arrangementer
    • Automatiseret marketing
    • Spørgeundersøgelser
    Tjenester
    • Projekt
    • Timesedler
    • Udkørende Service
    • Kundeservice
    • Planlægning
    • Aftaler
    Produktivitet
    • Dialog
    • Godkendelser
    • IoT
    • VoIP
    • Vidensdeling
    • WhatsApp
    Tredjepartsapps Odoo Studio Odoo Cloud-platform
  • Brancher
    Detailhandel
    • Boghandel
    • Tøjforretning
    • Møbelforretning
    • Dagligvarebutik
    • Byggemarked
    • Legetøjsforretning
    Mad og værtsskab
    • Bar og pub
    • Restaurant
    • Fastfood
    • Gæstehus
    • Drikkevareforhandler
    • Hotel
    Ejendom
    • Ejendomsmægler
    • Arkitektfirma
    • Byggeri
    • Ejendomsadministration
    • Havearbejde
    • Boligejerforening
    Rådgivning
    • Regnskabsfirma
    • Odoo-partner
    • Marketingbureau
    • Advokatfirma
    • Rekruttering
    • Audit & certificering
    Produktion
    • Tekstil
    • Metal
    • Møbler
    • Fødevareproduktion
    • Bryggeri
    • Firmagave
    Heldbred & Fitness
    • Sportsklub
    • Optiker
    • Fitnesscenter
    • Kosmetolog
    • Apotek
    • Frisør
    Håndværk
    • Handyman
    • IT-hardware og support
    • Solenergisystemer
    • Skomager
    • Rengøringsservicer
    • VVS- og ventilationsservice
    Andet
    • Nonprofitorganisation
    • Miljøagentur
    • Udlejning af billboards
    • Fotografi
    • Cykeludlejning
    • Softwareforhandler
    Gennemse alle brancher
  • Community
    Få mere at vide
    • Tutorials
    • Dokumentation
    • Certificeringer
    • Oplæring
    • Blog
    • Podcast
    Bliv klogere
    • Udannelselsesprogram
    • Scale Up!-virksomhedsspillet
    • Besøg Odoo
    Få softwaren
    • Download
    • Sammenlign versioner
    • Udgaver
    Samarbejde
    • Github
    • Forum
    • Arrangementer
    • Oversættelser
    • Bliv partner
    • Tjenester til partnere
    • Registrér dit regnskabsfirma
    Modtag tjenester
    • Find en partner
    • Find en bogholder
    • Kontakt en rådgiver
    • Implementeringstjenester
    • Kundereferencer
    • Support
    • Opgraderinger
    Github Youtube Twitter LinkedIn Instagram Facebook Spotify
    +1 (650) 691-3277
    Få en demo
  • Prissætning
  • Hjælp

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Bogføring
  • Lager
  • PoS
  • Projekt
  • MRP
All apps
Du skal være registreret for at interagere med fællesskabet.
All Posts People Emblemer
Tags (View all)
odoo accounting v14 pos v15
Om dette forum
Du skal være registreret for at interagere med fællesskabet.
All Posts People Emblemer
Tags (View all)
odoo accounting v14 pos v15
Om dette forum
Hjælp

How to check the size of a field

Tilmeld

Få besked, når der er aktivitet på dette indlæg

Dette spørgsmål er blevet anmeldt
fieldscharactersodooV8
5 Besvarelser
15938 Visninger
Avatar
Uillino

I know that the tag 'size' sets the maximum size of values stored for a field.

For example, in such way:

 name_of_field =  fields.Char('name of field', size=2)

I could write a maximum of two characters for 'name_of_field': one or two characters are allowed.

How can I prevent to write only one character?


-----------------------------------

This is the right xml file:

<field name="scode" on_change="on_change_length_id(scode)"/> 

and this is the right .py file:

# -*- encoding: utf-8 -*-
from openerp import models, fields
from openerp.osv import osv

class myclass(models.Model):
_name = 'tbl
_description = 'Write into db'

scode= fields.Char('Code', size=3 required=True)

def get_lenght(self, cr, uid, ids, scode, context=None):
if scode and len(scode) != 3:
My_error_Msg = 'Wrong size'
raise osv.except_osv(("Warning!"), (My_error_Msg))
return

else:
return scode


def on_change_length_id(self, cr, uid, ids, scode, context=None):
res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode, context=context)}}
return res

0
Avatar
Kassér
Avatar
Rihene
Bedste svar

 Here is the solution:
Python:

from openerp import models, fields

from openerp.osv import osv

class myclass(models.Model):

_name = 'tbl'

_description = 'Insert into db'

scode = fields.Char('Code', size=3, required=True)

def get_lenght(self, cr, uid, ids, scode context=None):

if len(scode) == 3:

return True

else:

My_error_Msg = 'Size uncorrect'

raise osv.except_osv(_("Error!"), _(My_error_Msg))

return False

def on_change_length_id(self, cr, uid, ids, scode, context=None):

res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode, context=context)

}

}

return res

And your XML:

<field name="scode" on_change="on_change_length_id(scode)"/>

Regards.

1
Avatar
Kassér
Uillino
Forfatter

I get this error: 2015-08-10 13:29:10,406 3867 ERROR MyModule werkzeug: Error on request: Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/Werkzeug-0.9-py2.7.egg/werkzeug/serving.py", line 174, in run_wsgi execute(self.server.app) File "/usr/lib/python2.7/site-packages/Werkzeug-0.9-py2.7.egg/werkzeug/serving.py", line 162, in execute application_iter = app(environ, start_response) File "/home/Odoo/openerp/openerp/service/server.py", line 281, in app return self.app(e, s) File "/home/Odoo/openerp/openerp/service/wsgi_server.py", line 216, in application return application_unproxied(environ, start_response) File "/home/Odoo/openerp/openerp/service/wsgi_server.py", line 202, in application_unproxied result = handler(environ, start_response) File "/home/Odoo/openerp/openerp/http.py", line 1280, in __call__ return self.dispatch(environ, start_response) File "/home/Odoo/openerp/openerp/http.py", line 1254, in __call__ return self.app(environ, start_wrapped) File "/usr/lib/python2.7/site-packages/Werkzeug-0.9-py2.7.egg/werkzeug/wsgi.py", line 574, in __call__ return self.app(environ, start_response) File "/home/Odoo/openerp/openerp/http.py", line 1412, in dispatch ir_http = request.registry['ir.http'] File "/home/Odoo/openerp/openerp/http.py", line 339, in registry return openerp.modules.registry.RegistryManager.get(self.db) if self.db else None File "/home/Odoo/openerp/openerp/modules/registry.py", line 335, in get update_module) File "/home/Odoo/openerp/openerp/modules/registry.py", line 366, in new openerp.modules.load_modules(registry._db, force_demo, status, update_module) File "/home/Odoo/openerp/openerp/modules/loading.py", line 351, in load_modules force, status, report, loaded_modules, update_module) File "/home/Odoo/openerp/openerp/modules/loading.py", line 255, in load_marked_modules loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks) File "/home/Odoo/openerp/openerp/modules/loading.py", line 176, in load_module_graph _load_data(cr, module_name, idref, mode, kind='data') File "/home/Odoo/openerp/openerp/modules/loading.py", line 118, in _load_data tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report) File "/home/Odoo/openerp/openerp/tools/convert.py", line 901, in convert_file convert_xml_import(cr, module, fp, idref, mode, noupdate, report) File "/home/Odoo/openerp/openerp/tools/convert.py", line 974, in convert_xml_import doc = etree.parse(xmlfile) File "lxml.etree.pyx", line 3197, in lxml.etree.parse (src/lxml/lxml.etree.c:64816) File "parser.pxi", line 1593, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:92943) File "parser.pxi", line 1624, in lxml.etree._parseFilelikeDocument (src/lxml/lxml.etree.c:93282) File "parser.pxi", line 1506, in lxml.etree._parseDocFromFilelike (src/lxml/lxml.etree.c:92145) File "parser.pxi", line 1069, in lxml.etree._BaseParser._parseDocFromFilelike (src/lxml/lxml.etree.c:89185) File "parser.pxi", line 577, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:84385) File "parser.pxi", line 676, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:85488) File "parser.pxi", line 616, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:84811) XMLSyntaxError: attributes construct error, line 11, column 17

Serpent Consulting Services Pvt. Ltd.

Share the XML file please.

Uillino
Forfatter

There were few errors in your code. I've tryed in such way: from openerp.osv import osv scode = fields.Char('Code', size=3, required=True) def get_lenght(self, cr, uid, ids, scode, context=None): if len(scode) != 3: My_error_Msg = 'Size uncorrect' raise osv.except_osv(_("Error!"), _(My_error_Msg)) return False else: return True def on_change_length_id(self, cr, uid, ids, scode, context=None): res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode, context=context) } } return res but I get this error: Traceback (most recent call last): File "/home/Odoo/openerp/openerp/http.py", line 530, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/home/Odoo/openerp/openerp/http.py", line 567, in dispatch result = self._call_function(**self.params) File "/home/Odoo/openerp/openerp/http.py", line 303, in _call_function return checked_call(self.db, *args, **kwargs) File "/home/Odoo/openerp/openerp/service/model.py", line 113, in wrapper return f(dbname, *args, **kwargs) File "/home/Odoo/openerp/openerp/http.py", line 300, in checked_call return self.endpoint(*a, **kw) File "/home/Odoo/openerp/openerp/http.py", line 796, in __call__ return self.method(*args, **kw) File "/home/Odoo/openerp/openerp/http.py", line 396, in response_wrap response = f(*args, **kw) File "/home/Odoo/openerp/openerp/addons/web/controllers/main.py", line 949, in call_kw return self._call_kw(model, method, args, kwargs) File "/home/Odoo/openerp/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 "/home/Odoo/openerp/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/home/Odoo/openerp/openerp/api.py", line 363, in old_api result = method(recs, *args, **kwargs) File "/home/Odoo/openerp/openerp/models.py", line 5786, in onchange record._onchange_eval(name, field_onchange[name], result) File "/home/Odoo/openerp/openerp/models.py", line 5720, in _onchange_eval method_res = getattr(self._model, method)(*args) File "/home/Odoo/openerp/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/home/Odoo/openerp/openerp/addons/mymodule/macro_sotto.py", line 32, in on_change_length_id res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode_macro_attivita, context=context) File "/home/Odoo/openerp/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/home/Odoo/openerp/openerp/addons/mymodule/macro_sotto.py", line 23, in get_lenght if len(scode) != '3': TypeError: object of type 'bool' has no len()

Rihene

If it works for you friend CHECK it ;)

Uillino
Forfatter

Thank you for your help, but I get the same error: TypeError: object of type 'bool' has no len()

Rihene

Try this one please

Uillino
Forfatter

The error is the same: TypeError: object of type 'bool' has no len(). I don't understand why!

Uillino
Forfatter

I've solved! The problem is that odoo set scode to True by default. So I need to put an 'if scode', Now I'm going to post the right code. Thank you for your help.

Avatar
Uillino
Forfatter Bedste svar

I get this error:

TypeError: object of type 'bool' has no len() 

using this code:

from openerp import models, fields
from openerp.osv import osv

class myclass(models.Model):
_name = 'tbl'
_description = 'Insert into db'

scode = fields.Char('Code', size=3, required=True)

def get_lenght(self, cr, uid, ids, scode context=None):
if len(scode == 3:
return True
else:
My_error_Msg = 'Size uncorrect'
raise osv.except_osv(_("Error!"), _(My_error_Msg))
return False

def on_change_length_id(self, cr, uid, ids, scode context=None):
res = {'value': {'scode': self.get_lenght(cr, uid, ids, scode context=context)
}
}
return res

and this xml file:

<field name="scode" on_change="on_change_length_id(scode)"/> 

Any idea?

Thanks!

0
Avatar
Kassér
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Tilmeld dig
Related Posts Besvarelser Visninger Aktivitet
display field by selected model.
fields odooV8
Avatar
0
mar. 16
4080
Retrieving the keys from the selection field
fields odooV8
Avatar
0
dec. 15
5289
What is use of oldname? Løst
fields openerp7 odooV8
Avatar
Avatar
Avatar
2
aug. 22
15211
How to let a field stay editable even after save or confirm
fields editable odooV8
Avatar
Avatar
1
apr. 19
5208
How to have more than one many2one field for a method?
fields many2one odooV8
Avatar
Avatar
1
jun. 18
4673
Community
  • Tutorials
  • Dokumentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Oversættelser
Tjenester
  • Odoo.sh-hosting
  • Support
  • Opgradere
  • Individuelt tilpasset udvikling
  • Uddannelse
  • Find en bogholder
  • Find en partner
  • Bliv partner
Om os
  • Vores virksomhed
  • Brandaktiver
  • Kontakt os
  • Stillinger
  • Arrangementer
  • Podcast
  • Blog
  • Kunder
  • Juridiske dokumenter • Privatlivspolitik
  • Sikkerhedspolitik
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo er en samling open source-forretningsapps, der dækker alle dine virksomhedsbehov – lige fra CRM, e-handel og bogføring til lagerstyring, POS, projektledelse og meget mere.

Det unikke ved Odoo er, at systemet både er brugervenligt og fuldt integreret.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now