Odoo ORM (Nesne-İlişkisel Eşleme), veritabanıyla etkileşim kurmanın ve Odoo platformunda veritabanı işlemleri gerçekleştirmenin bir yoludur. ORM, veritabanı işlemlerine nesne yönelimli programlama (OOP) ilkelerini uygulayarak veritabanı tablolarını Python nesneleri olarak temsil eder. Bu, veritabanı işlemlerini daha programlanabilir ve okunabilir hale getirir ve geliştiricilere veritabanı işlemlerini yönetmek için daha kolay bir yol sağlar.
İşte Odoo ORM'nin temel kavramları ve işleyişleri:
- Model
Bir model, bir veritabanı tablosunu temsil eden bir Python sınıfıdır. Odoo'daki her modül bir veya daha fazla model içerir. Bu modeller veritabanındaki tabloları oluşturur ve yönetir. Aşağıda basit bir model örneği verilmiştir:from odoo import models, fields
class Customer(models.Model):
_name = 'res.partner'
_inherit = 'res.partner'
# Custom fields
is_company = fields.Boolean(string='Is a Company', default=False)
customer_code = fields.Char(string='Customer Code') - Field
Field (alan), bir modeldeki verilerin türlerini ve davranışlarını tanımlar. Alanlar, bir veritabanı tablosundaki sütunları temsil eder. Örneğin, bir müşteri modelinde, "isim", "e-posta" ve "telefon" gibi alanlar tanımlanabilir: - Record
Bir kayıt, bir modelin belirli bir veritabanı girişini temsil eder. Her kayıt, model tarafından tanımlanan alanlar için veri içerir. Örneğin, bir Müşteri kaydı aşağıdaki şekilde oluşturulabilir:new_customer = self.env['res.partner'].create({
'name': 'John Doe',
'email': '[email protected]',
'phone': '123456789'
}) - Domain and Context
- Domain : Veritabanı kayıtlarını belirli koşullara göre filtrelemek için kullanılır. Örneğin, kayıtları bir alanın değerine göre filtrelemek:
domain = [('is_company', '=', True)]
companies =
self.env['res.partner'].search(domain) - Context : İşlemlerin davranışını belirtmek için kullanılır. Örneğin, bağlamı kullanarak kullanıcının dilini veya diğer ayarları ayarlamak:
context = {'lang': 'en_US'}
products =
self.env['product.product'].with_context(context).search([])
- Domain : Veritabanı kayıtlarını belirli koşullara göre filtrelemek için kullanılır. Örneğin, kayıtları bir alanın değerine göre filtrelemek:
- CRUD İşlemleri (Create, Read, Update, Delete)
- Create : Yeni bir kayıt oluşturma:
new_customer = self.env['res.partner'].create({
'name': 'Jane Doe',
'email': '[email protected]' }) - Read : Kayıtları Okuma:
customer = self.env['res.partner'].browse(1)
print(customer.name) - Update : Kayıtları Güncelleme:
customer.write({'email': '[email protected]'}) - Delete: Kayıtları Silme:
customer.unlink()
- Create : Yeni bir kayıt oluşturma:
Sonuç
Odoo ORM, geliştiricilere veritabanı işlemlerini yönetmede esneklik ve kolaylık sağlar. Bu, uygulamaların hızlı bir şekilde geliştirilmesini ve özelleştirilmesini kolaylaştırır. ORM kullanılarak, veritabanı işlemleri Python koduyla daha net ve sürdürülebilir bir şekilde yönetilir.
ORM (Nesne-İlişkisel Eşleme)