Skip ke Konten
Odoo Menu
  • Login
  • Uji coba gratis
  • Aplikasi
    Keuangan
    • Akuntansi
    • Faktur
    • Pengeluaran
    • Spreadsheet (BI)
    • Dokumen
    • Tanda Tangan
    Sales
    • CRM
    • Sales
    • POS Toko
    • POS Restoran
    • Langganan
    • Rental
    Website
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Rantai Pasokan
    • Inventaris
    • Manufaktur
    • PLM
    • Purchase
    • Maintenance
    • Kualitas
    Sumber Daya Manusia
    • Karyawan
    • Rekrutmen
    • Cuti
    • Appraisal
    • Referensi
    • Armada
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Acara
    • Otomatisasi Marketing
    • Survei
    Layanan
    • Project
    • Timesheet
    • Layanan Lapangan
    • Meja Bantuan
    • Planning
    • Appointment
    Produktivitas
    • Discuss
    • Approval
    • IoT
    • VoIP
    • Pengetahuan
    • WhatsApp
    Aplikasi pihak ketiga Odoo Studio Platform Odoo Cloud
  • Industri-Industri
    Retail
    • Toko Buku
    • Toko Baju
    • Toko Furnitur
    • Toko Kelontong
    • Toko Hardware
    • Toko Mainan
    Makanan & Hospitality
    • Bar dan Pub
    • Restoran
    • Fast Food
    • Rumah Tamu
    • Distributor Minuman
    • Hotel
    Real Estate
    • Agensi Real Estate
    • Firma Arsitektur
    • Konstruksi
    • Estate Management
    • Perkebunan
    • Asosiasi Pemilik Properti
    Konsultansi
    • Firma Akuntansi
    • Mitra Odoo
    • Agensi Marketing
    • Firma huku
    • Talent Acquisition
    • Audit & Sertifikasi
    Manufaktur
    • Tekstil
    • Logam
    • Perabotan
    • Makanan
    • Brewery
    • Corporate Gift
    Kesehatan & Fitness
    • Sports Club
    • Toko Kacamata
    • Fitness Center
    • Wellness Practitioners
    • Farmasi
    • Salon Rambut
    Perdagangan
    • Handyman
    • IT Hardware & Support
    • Sistem-Sistem Energi Surya
    • Pembuat Sepatu
    • Cleaning Service
    • Layanan HVAC
    Lainnya
    • Organisasi Nirlaba
    • Agen Lingkungan
    • Rental Billboard
    • Fotografi
    • Penyewaan Sepeda
    • Reseller Software
    Browse semua Industri
  • Komunitas
    Belajar
    • Tutorial-tutorial
    • Dokumentasi
    • Sertifikasi
    • Pelatihan
    • Blog
    • Podcast
    Empower Education
    • Program Edukasi
    • Game Bisnis 'Scale Up!'
    • Kunjungi Odoo
    Dapatkan Softwarenya
    • Download
    • Bandingkan Edisi
    • Daftar Rilis
    Kolaborasi
    • Github
    • Forum
    • Acara
    • Terjemahan
    • Menjadi Partner
    • Layanan untuk Partner
    • Daftarkan perusahaan Akuntansi Anda.
    Dapatkan Layanan
    • Temukan Mitra
    • Temukan Akuntan
    • Temui penasihat
    • Layanan Implementasi
    • Referensi Pelanggan
    • Bantuan
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Dapatkan demo
  • Harga
  • Bantuan

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Akuntansi
  • Inventaris
  • PoS
  • Project
  • MRP
All apps
Anda harus terdaftar untuk dapat berinteraksi di komunitas.
Semua Post Orang Lencana-Lencana
Label (Lihat semua)
odoo accounting v14 pos v15
Mengenai forum ini
Anda harus terdaftar untuk dapat berinteraksi di komunitas.
Semua Post Orang Lencana-Lencana
Label (Lihat semua)
odoo accounting v14 pos v15
Mengenai forum ini
Help

Using for loop when accessing/modifying fields vs using only self

Langganan

Dapatkan notifikasi saat terdapat aktivitas pada post ini

Pertanyaan ini telah diberikan tanda
fieldsmodelscomputed-fields
2 Replies
8505 Tampilan
Avatar
John Doe
If I have simple computed field like this:

@api.depends('field_a', 'field_b')
def _compute_field_c(self):
for record in self:
record.field_c = field_a + field_b
Should I use for loop here? It also works if I write: self.field_c = field_a + field_b.

When should I loop through self? If I write print(record) and click on item in the list view to open form view, it only prints one record, even in for loop. So maybe I don't have to use for loop in this case?


This question also applies to inverse functions and other ones that I think are supposed to use for loop.
0
Avatar
Buang
Avatar
Sudhir Arya (ERP Harbor Consulting Services)
Jawaban Terbai

Without Depends:
For loop should be used if your compute method doesn't have any api.depends and you have added the computing field in the list/tree view since the system will call the compute method for all the active records in the list view.

With Depends:
If you use api depends on compute method and there could be the case that those depend fields get updated at the same time, in this case for loop is needed, otherwise, you will see an error of "singleton".

But I would recommend always use for loop to avoid any traceback in the future.

2
Avatar
Buang
John Doe
Penulis

Thanks. On the tutorial page I saw this example on custom actions:

from odoo import fields, models

class TestAction(models.Model):
_name = "test.action"

name = fields.Char()

def action_do_something(self):
for record in self:
record.name = "Something"
return True

Why is for loop used here? Do we need it? Because we're modifying very specific record as I understand it.

For example, there's a button "Action Something" in form view of some record. It doesn't refer to other records. We don't want to set "name" attribute for all records, only this one. I hope this makes sense. Would it be okay to do self.name = "something" in this example?

Or maybe loop is here because this action can be applied to lots of records as once?

Avatar
Waleed Mohsen (CorTex IT Solutions)
Jawaban Terbai

With computed fields I recommend to always use for loop, you will get an error if the fields appears in list view and not using store= True. So use for loop always with computed fields.

Read more in the below link:

https://www.odoo.com/documentation/14.0/developer/reference/addons/orm.html#computed-fields

1
Avatar
Buang
John Doe
Penulis

Thanks. On the tutorial page I saw this example on custom actions:

from odoo import fields, models

class TestAction(models.Model):
_name = "test.action"

name = fields.Char()

def action_do_something(self):
for record in self:
record.name = "Something"
return True

Why is for loop used here? Do we need it? Because we're modifying very specific record as I understand it.

For example, there's a button "Action Something" in form view of some record. It doesn't refer to other records. We don't want to set "name" attribute for all records, only this one. I hope this makes sense. Would it be okay to do self.name = "something" in this example?

Waleed Mohsen (CorTex IT Solutions)

If the action linked with button on form, you can use self.name = "something" without loop.
But sometimes you need to add this action to Actions menu as server action to apply the action to selected records from list view so you will write the server action

<record id="lunch_order_action_confirm" model="ir.actions.server">
<field name="name">Lunch: Receive meals</field>
<field name="model_id" ref="model_lunch_order"/>
<field name="binding_model_id" ref="model_lunch_order"/>
<field name="binding_view_types">list</field>
<field name="state">code</field>
<field name="code">records.action_confirm()</field>
</record>

As you can see the action_confirm methods called for selected record from form view and if write your code of method without loop then you will get an error.

So the summary you cannot use it without loop but its recomended to use loop.

Menikmati diskusi? Jangan hanya membaca, ikuti!

Buat akun sekarang untuk menikmati fitur eksklufi dan agar terlibat dengan komunitas kami!

Daftar
Post Terkait Replies Tampilan Aktivitas
View a field from one model in another model Diselesaikan
fields models
Avatar
Avatar
1
Nov 25
6221
How to find the field type? Diselesaikan
fields models
Avatar
Avatar
1
Jun 25
6026
need to get the computed fields related models dinamically
models computed-fields
Avatar
0
Jun 21
3151
Design a field value verification (not odoo.api.constrains validation)
fields models
Avatar
Avatar
Avatar
3
Jul 20
12881
Add base field (default_code) to a model (stock.quant)
fields models
Avatar
0
Nov 16
5447
Komunitas
  • Tutorial-tutorial
  • Dokumentasi
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Terjemahan
Layanan
  • Odoo.sh Hosting
  • Bantuan
  • Peningkatan
  • Custom Development
  • Pendidikan
  • Temukan Akuntan
  • Temukan Mitra
  • Menjadi Partner
Tentang Kami
  • Perusahaan kami
  • Aset Merek
  • Hubungi kami
  • Tugas
  • Acara
  • Podcast
  • Blog
  • Pelanggan
  • Hukum • Privasi
  • Keamanan
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo adalah rangkaian aplikasi bisnis open source yang mencakup semua kebutuhan perusahaan Anda: CRM, eCommerce, akuntansi, inventaris, point of sale, manajemen project, dan seterusnya.

Mudah digunakan dan terintegrasi penuh pada saat yang sama adalah value proposition unik Odoo.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now