2
class Sale(osv.osv):
_name = 'sale'

_columns = {
    'name': fields.char('Company Name', size=128)
}

def get_default_company(self, cr, uid, context=None):
    company_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.id,
    return company_id
Sale()

上記のコードを使用しましたが、すべて問題ありませんが、関数を呼び出す場所と方法がわかりませんget_default_company()。このメソッドを呼び出すと、

cr and uid invalids 
4

3 に答える 3

1

Sale class _defaults dict を追加するだけです。OpenERP は、新しいオブジェクトを作成するときに自動的に呼び出します。

_defaults = {
        'company_id': get_default_company,
}

たとえば、ここを見てください。詳細については、OpenERP モジュール コードを参照してください。

于 2014-04-22T07:51:07.413 に答える
1

AttributeError: 'NoneType' とは何ですか?

NoneTypeは、クラスまたはオブジェクトの関数またはインスタンスが機能しないことを意味し、実際にはNoneを取得しています。


あなたはSale()であるため、このエラーが発生します。関数を呼び出す必要があり、get_default_company()このメソッドを実装する前にこの関数を呼び出す必要があります。そうしないと、エラーが発生します(get_default_company関数が存在しませ)。

class Sale(osv.osv): 
    _name = 'sale'

    def get_default_company(self, cr, uid, context=None):
        company_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.id,
        return company_id

    get_default_company()             // Call this function

    _columns = {
         'name': fields.char('Company Name', size=128)
    }

関数フィールドを作成したい場合は、このドキュメントを確認して作成できます。

于 2014-04-22T06:57:51.247 に答える
0

会社のデフォルト値を設定する必要があるようです。_defaultsそのためには、フィールドのデフォルト値を設定するモデル属性を使用する必要があります。お気に入り

_defaults = {
    'company_id': get_company
}

このメソッドの前に、次のような会社 ID を返す get_company メソッドを定義する必要があります

def get_company(self, cr, uid, context=None):
    user_rec = self.pool.get('res.users').browse(cr, uid, uid, context)
    return user_rec.company_id.id

そして、これには のフィールドが必要です_columnscompany_idそのため、フィールドとしても追加する必要がありmany2oneます。お気に入り

_columns = {
    'name': fields.char('Company Name', size=128),
    'company_id': fields.many2one('res.company', "Company")
}

このすべてを変更すると、モデルは次のようになります。

class sale(osv.osv):
    _name = 'sale'

    _columns = {
        'name': fields.char('Company Name', size=128),
        'company_id': fields.many2one('res.company', "Company")
    }


    def get_company(self, cr, uid, context=None):
        user_rec = self.pool.get('res.users').browse(cr, uid, uid, context)
        return user_rec.company_id.id

    _defaults = {
        'company_id': get_company
    }

sale()

お役に立てれば!

于 2014-04-22T09:26:07.023 に答える