Skip to Content
Menu
This question has been flagged
2 Replies
6516 Views

the code i have written in the model is as follows...

from osv import osv
from osv import fields
class krunk_test(osv.osv):
    _name = 'krunk.test'

    _defaults = {
            'active': lambda *a: 1, # ideas are active by default
            'state':'draft', # ideas are in draft state by default
            }

    _columns = {
            'name': fields.char("Title", size=64, required=True, translate=True),
            'state': fields.selection([('draft','Draft'),('confirmed','confirmed')],"State", required=True, readonly=True),

    #Description is readonly  whn not draft!

            'description':fields.text('Description', readonly=True, states={'draft':[('readonly', False)]}),
            'active': fields.boolean('Active'),
            'invent_date': fields.date('Invent date')
            }

when I save the form it require "state" value. i have defined the value for "state" in _defaults. can anyone please tell me what's happening here? Thank you.

Avatar
Discard
Best Answer

Hello,

It is just a supposition, but maybe your field state is in your form view with a classical widget. As your fields is readonly when draft it may cause your trouble. Just try to remove states={'draft':[('readonly', False)] and tell me if it works.

Else some other points:

active statement in meaningless a record is active by default.

By convention _defaults is defined after _columns

Your _defaults seems to be correct it should work.

from openerp.osv import orm, fields

class KrunkTest(orm.Model): 

    _name = 'krunk.test'

    _columns = {'name': fields.char("Title", size=64, required=True, translate=True),
                'state': fields.selection([('draft', 'Draft'), ('confirmed', 'confirmed')],
                                          "State", required=True, readonly=True),

                'description': fields.text('Description', readonly=True, 
                                           states={'draft':[('readonly', False)]}),
                'active': fields.boolean('Active'),
                'invent_date': fields.date('Invent date')}

    _defaults = {'state': 'draft'} # ideas are in draft state by default
Avatar
Discard

I can confirm that _default values only work if the related field is not readonly!

Cool, so do not forget to flag the answer as correct ;)

If I want to accept it says that I cannot accept before March 14th :-). I think the original poster has to accept it

Author Best Answer

i have removed the code states={'draft':[('readonly', False)] and now it's working i restarted the server and it works. but still not getting states={'draft':[('readonly', False)] what it is doing here?

Avatar
Discard

The field "state" MUST NOT be readonly

'state': fields.selection([('draft','Draft'),('confirmed','confirmed')],"State", required=True),

Author

Andreas Brueck...._default values work either it is readonly or not !!

You are making the entire column in the database read only, you need to make the field that is displayed to the user in the XML conditionally read only. You cannot define the field 'state' as read only when you declare it, that makes its it a read only field in the database, that nothing can change. You want to add your condition in the XML file that makes your field 'state' read only or not depending on other conditions.