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

I'm trying to figure how the .get works, i'm looking the code from sale.py and how the sequence is added to any saleOrder and trying to understand this.

if vals.get('sequence','New') == 'New':

As I understand the vals.get('sequence') will return the value from the sequence field.  But I don't know and I didn't find information about the use of the other parameters and how gets compared with the string "New" (Or if is a reserved word for a new register).

That New is used after in the value assignation for the 'sequence' field, as the following code shows.

 if vals.get('sequence','New') == 'New':
                vals['sequence']    =   self.env['ir.sequence'].next_by_code(sequence_name) 
                result              = super(feature,self).create(vals)
                return result

Hope you can help me with my question.

Regards.

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

If the dictionary vals has a key 'xxx', then it will return vals['xxx']. If the dictionary doesn't have a key 'xxx', then 'yyy' will be returned.

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

vals is just a standard Python dictionary.

dict.get(key, default=None)

used with key - it will return the value that matches

used with default - it will return the value that matches, or the default (None)


In the example you have posted, vals.get('sequence','New') will return the value of the key sequence, or New.  So: the code checks if there is a sequence key in vals, and if there isn't, creates one, and calls super after putting the newly created value into vals.


https://www.odoo.com/documentation/10.0/reference/orm.html

https://www.tutorialspoint.com/python/dictionary_get.htm

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
2
thg 12 23
29405
1
thg 10 18
5474
0
thg 1 25
1585
3
thg 7 23
5496
1
thg 10 22
3546