2016-04-14 17 views

cevap

12

Odoo 9'dan itibaren, ir.attachment modelinin (ir_attachment tablosu) içinde depolanmak üzere birçok binary alanı değiştirilmiştir. Bu, dosya sistemi depolamasından (ve tekilleştirme özelliklerinden) yararlanmak ve veritabanını şişirmekten kaçınmak için yapıldı.

res.partner's image fields için yapıldığı gibi, attachment=True parametresiyle ikili alanlarda etkinleştirilir.

aktif

, ir.attachment tabloda ikili alanların get() ve set() yöntem olacak store and retrieve the value.

  • name: ikili alanın adı, ör sen code bakarsak, eklerin orijinal kayıt bağlantısını kurmak için aşağıdaki değerleri kullanın göreceksiniz image
  • res_field: ikili alanın adı, ör. image
  • res_model: alanı içeren modeli ör. res.partner
  • res_id: Kimliği ikili alan aittir kaydın
  • type
  • için: 'binary'
  • datas: aslında

Yani eğer diskte saklanan ikili alanda, içeriğiyle sanal alan res.partner'un image değerini 32 ID ile tutarak ir.attachment kaydını almak istediğinizde, aşağıdaki SQL'i kullanabilirsiniz:

girişleri varsayılan olarak dosya sistemi depolama kullandığından abc... değeri SHA-1 karma olduğu
SELECT id, store_fname FROM ir_attachment 
WHERE res_model = 'res.partner' AND res_field = 'image' AND res_id = 32; 

, store_fname alanın gerçek değeri biçiminde 'ab/abcdef' yılında, sizin Odoo Filestore içindeki resim dosyasına sana yolu verecektir dosyanın Bu, Odoo'nun eklerin tekilleştirilmesini nasıl uyguladığıdır: aynı dosyaya sahip birkaç eklenti, diskteki aynı benzersiz dosyayla eşleşecektir.

programlı image alanın değerini değiştirmek isterseniz

, kuvvetle tutarsızlıkları oluşturma veya manuel dosya depolama sistemini yeniden düzenlemesini zorunda kalmamak için, ORM API (örn write() yöntemi) kullanılması önerilir .

İşte

  • Referanslar ekleri
  • Ve kullanmak için res.partner arasında image alanını dönüştüren 9.0 commit olarak ikili alanlar saklamak için özelliği tanıtmaktadır original 9.0 commit olduğunu.
+0

kullanıyorum Çok teşekkürler :) Ayrıca ekte ve res_partner tablosunda bu tabloyu bağlamak için hangi tablonun kullanıldığını söyleyebilir misiniz? res_partner görüntüsü için eki bağlayan ilişki nerede? –

+1

Rica ederim! "Ir.attachment" içindeki verileri "res.partner" satırlarıyla ilişkilendiren tablo, "ir_attachment" tablonun kendisidir. "Res_model", "res_field" ve "res_id" sütunları, "res_partner" ile bir çeşit "many2one" ilişkisi veya "attachment = True" ile bir ikili alana sahip başka bir tablo oluşturur. Belirli bir iş ortağı için eki almak için kullanabileceğiniz bir SQL sorgusu ve dosya dosyasındaki gerçek görüntü dosyasını bulmak için bazı açıklamalar ekledim. – odony

İlgili konular