Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
7272 Lượt xem

Hi all,

I get this Error Message:

 vlabel(<NewId 0x7fa1c8069a90>,).product_value

when trying to create a new "product" in my custom module.  Any help is appreciated.

See the code here:

sequence.xml

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">

<!-- Sequences for sale.order -->
<record id="seq_vlabel_product" model="ir.sequence">
<field name="name">Product Sequence</field>
<field name="code">vlabel.product.sequence</field>
<field name="prefix">V</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>

</data>
</odoo>

label_products.py
# -*- coding: utf-8 -*-

from odoo import models, fields, api, _
from odoo.exceptions import ValidationError

class VLabel(models.Model):
_name = 'vlabel'
_inherit = ['mail.thread.cc', 'mail.activity.mixin']
_rec_name = 'product_name'

@api.constrains('product_fee')
def check_fee(self):
for rec in self:
if rec.product_fee < 68:
raise ValidationError(_('The Price must be at least 68 €'))

@api.depends('product_fee')
def set_value_group(self):
for rec in self:
if rec.product_fee:
if rec.product_fee <= 250:
rec.product_value = 'decent'
else:
rec.product_value = 'great'

product_name = fields.Char(string='Name', required = True)
product_category = fields.Selection([
('vegan', 'Vegan'),
('vegetarian', 'Vegetarian'),
], string="Category")
product_fee = fields.Integer('Price', track_visibility="always")
product_creator = fields.Char(string='Creator')
product_sequence = fields.Char(string='Order Reference', required=True, copy=False, readonly=True,
index=True, default=lambda self: _('New'))
product_value = fields.Selection([
('great', 'Great'),
('decent', 'Decent'),
], string="Value", compute='set_value_group')

@api.model
def create(self, vals):
if vals.get('product_sequence', _('New')) == _('New'):
vals['product_sequence'] = self.env['ir.sequence'].next_by_code('vlabel.product.sequence') or _('New')
result = super(VLabel, self).create(vals)
return result

label_products_view.xml

<?xml version="1.0" encoding="utf-8"?>
<odoo>

<!-- Add Search View-->
<record id="label_product_search_view" model="ir.ui.view">
<field name="name">product_search_view</field>
<field name="model">vlabel</field>
<field name="arch" type="xml">
<search string="Search Products">
<field name="product_category" filter_domain="['|', ('product_name','ilike',self), ('product_sequence','ilike',self)]"/>
<field name="product_name"/>
<field name="product_sequence"/>

<!-- Added Filter-->
<separator/>
<filter name="vegetarian" string="Vegetarian" domain="[('product_category','=','vegetarian')]"/>
<filter name="vegan" string="Vegan" domain="[('product_category','=','vegan')]"/>

<!-- Added Group-->
<group string="Group By" expand="0">
<filter string="Category" name="product_category" context="{'group_by':'product_category'}" />
</group>
</search>
</field>
</record>


<!-- Product Form View -->
<record id="vlabel_view" model="ir.ui.view">
<field name="name">vlabel.form.view</field>
<field name="model">vlabel</field>
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_title">
<h1>
<field name="product_sequence" readonly="1"/>
</h1>
</div>
<group string="Product Information">
<group>
<field name="product_name"/>
<field name="product_category" widget="radio"/>
</group>
<group>
<field name="product_fee"/>
<field name="product_creator"/>
</group>
<group>
<field name="product_value"/>
<field name="product_sequence"/>
</group>
</group>
</sheet>

<!-- Chatter View -->
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="activity_ids" widget="mail_activity"/>
<field name="message_ids" widget="mail_thread" options="{'post_refresh': 'recipients'}"/>
</div>
</form>
</field>
</record>

<!-- Product Tree View -->
<record id="label_tree_view" model="ir.ui.view">
<field name="name">label.tree.view</field>
<field name="model">vlabel</field>
<field name= "arch" type = "xml">
<tree string="Product Information">
<field name="product_name"/>
<field name="product_category"/>
<field name="product_value"/>
<field name="product_fee"/>
<field name="product_sequence"/>
<field name="product_creator"/>
</tree>
</field>
</record>


<record id="action_product" model="ir.actions.act_window">
<field name="name">Product</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">vlabel</field>
<field name="view_mode">tree,form</field>
</record>

<menuitem id="vlabel_root" name = 'V-Label' sequence = '0'/>
<menuitem id="vlabel_product" name = "Product" parent = 'vlabel_root' action = 'action_product'/>

</odoo>
Ảnh đại diện
Huỷ bỏ

Do you really mean to override the create method?

Tác giả

Hm, I basically followed this tutorial https://www.youtube.com/watch?v=Mg80GxrKDOc&list=PLqRRLx0cl0hoJhjFWkFYowveq2Zn55dhM&index=11 and the error kept occuring after adding the compute function. I am very new to this so I am not entirely sure if I meant what I did

Tác giả

In any case, i gave default value for product_fee 1 which helped, so i guess I'm good

Câu trả lời hay nhất

Hi Adrian,

Give a try with below code

Change method "set_value_group" as below

 @api.depends('product_fee')
 def set_value_group(self): 
       for rec in self:
             rec.product_value = 'great'
             if rec.product_fee: 
                 if rec.product_fee <= 250:
                     rec.product_value = 'decent'


Thanks

Ảnh đại diện
Huỷ bỏ
Tác giả

Hey Kanak,

thank you very much, worked like a charm

Câu trả lời hay nhất

I accidently flagging the best answer, how to make it back to display in answer list?.. tq

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 4 20
5146
4
thg 10 20
8948
3
thg 2 24
10413
1
thg 11 23
2812
1
thg 6 23
3589