1

私はこれを持っています:

class events_places(osv.osv):

    """Places for events"""
    _name = 'oevents.places'
    _columns = {
        'name': fields.char('Name',size=35, help='Place\'s name', required = True),
        'description': fields.char('Description',size=50, help='Place\'s description'),
        'street': fields.char('Street',size=35, help='Place\'s street', required = True),
        'number': fields.integer('Local number', help='Place\'s local number', required = True),
        'zip': fields.char('Zip Code', size=5, help='Place\'s Zip code', required = True),
        'city': fields.char('City',size=20, help='Place\'s city', required = True),
        'country': fields.many2one('res.country', 'Country', help='Place\'s country'),
        'state': fields.many2one('res.country.state','State', help='Place\'s state'),
        'inWinter': fields.boolean('Active in winter', store = True, help='Place\'s province'),
    } 
    _defaults = {
        'inWinter' : True,
    }

class events_events(osv.osv):

    """Client's contacts"""
    _name = 'oevents.events'
    _columns = {
        'name': fields.char('Name',size=20, help='Event\'s name', required = True),
        'place': fields.many2one('oevents.places','Place', help='Event\'s location', required = True),
        'artist': fields.many2one('oevents.artists','Artist', help='Artist\'s performing in the event.', required = True),
        'client': fields.many2one('res.partner','Client', help='Event\'s clients.', required = True),
        'date': fields.date('Date', help='Event\'s date.', required = True),
        'type': fields.selection([('children','Children\'s'),('private','Private'),('concert','Concert')],'Event type', help='Type of event this artist can do'),
    } 
    _defaults = {
        'type' : 'private'
    }

イベントを作成したいときは、場所関連のフィールドがあります。イベントには日付がありますが、イベントの関連する場所のフィールドでフィールドinWinterがオフになっている場合、冬の日付でイベントを作成することはできません。

どうやってやるの?冬のフィールドに配置される関数または制約を作成して日付と比較する必要がありますが、その方法がわかりません。助言がありますか?

前もって感謝します!

4

4 に答える 4

1

'date'フィールドにon_change関数を記述する必要があります。この場合、指定された日付が冬の月であり、isWinterがfalseの場合、エラーが発生します。もちろん、xmlビューのフィールド定義でiswinterputon_changeの範囲日付を定義する必要があります。

于 2012-12-16T12:41:08.573 に答える
1

create&writeメソッドをオーバーライドできます。これらのメソッドでは、「inWinter」がTrueかFalseかを確認するだけです。

新しいレコードが作成されるときに、def create()メソッドが呼び出されます。

def create(self, cr, uid, vals, context=None):
    if vals.get('place'):
        event_brw = self.pool.get('oevents.places').browse(cr, uid, vals.get('place'), context=context)
        #if inWinter is True
        if event_brw.inWinter:
            raise osv.except_osv('Error ! ', 'You can not create an event in winter.')
    return super(oevents_events, self).create(cr, uid, vals, context)

レコードが変更されるときにdefwrite()メソッドが呼び出されます。

def write(self, cr, uid, ids, vals, context=None):
    if vals.get('place'):
        event_brw = self.pool.get('oevents.places').browse(cr, uid, vals.get('place'), context=context)
        #if inWinter is True
        if event_brw.inWinter:
            raise osv.except_osv('Error ! ', 'You can not create an event in winter.')
    return super(oevents_events, self).write(cr, uid, ids, vals, context)
于 2012-12-17T06:37:03.590 に答える
1

制約を使用する必要があります。_constraintsおよびのgrepaddonsフォルダーに_sql_contraintsは、多くの例があります。

于 2012-12-17T08:32:10.707 に答える
0

のために行く、と_constraints=呼ぶのはまったく良い考えではありません。createwrite

于 2012-12-26T12:31:33.393 に答える