カスタムモジュールからの余分なフィールドを持つ製品があります。私はコピー機能を書き直そうとしています。なぜなら、製品を複製しようとするといくつかの値が重複しないからです。重複したレコードにmany2oneフィールドの問題がありません
このコピー機能では、これらのフィールドを追加することができますが、元の製品フィールドからidsを追加しようとすると、その製品が複製された後に値が失われます。私はそれが理にかなっていると思う。
コード:
class ProductTemplate(models.Model):
_inherit= 'product.template'
@api.multi
def copy(self, default=None):
default = dict(default or {})
array_attribute_line_ids = []
for value_id in self.attribute_line_ids.read([]):
array_attribute_line_ids += [(4,value_id['id'])]
print (array_attribute_line_ids)
default.update({
# General Information
# 'standard_price': self.standard_price,
# Variants > Attributes
'attribute_line_ids': array_attribute_line_ids,
# Purchase > Vendors
# Inventory
'weight': self.weight,
'volume': self.volume,
# Invoicing
'property_account_income_id': self.property_account_income_id,
'supplier_taxes_id': self.supplier_taxes_id, #NOT WORKING
'property_account_expense_id': self.property_account_expense_id,
'property_account_creditor_price_difference': self.property_account_creditor_price_difference,
})
return super(ProductTemplate, self).copy(default)
表示:手元フィールドは、画像の下に示すattribute_line_idsあります。
問題:私はオリジナルのものに基づいて新しいレコードを作成することもできますが、問題は、これらの値の1は、製品のIDの値「product_tmpl_id」を必要とするmany2oneに依存していることです。だから、もし私が新製品のIDをまだ持っていないのであれば、どうすればこれらの価値を創り出すことができますか?それは現時点では重複していないからです。
以前は別の機能で私はレコードを作成し、そのIDを使用してこれらの値を更新しました。今は不可能です。
これを解決する方法はありますか?手動で作成する必要なしにすべてのレコードを複製できるようにする.copy()関数はありますか?
ありがとうございました。
これはodoo 11 enterpriseです。
私はこれを試してみました、それが動作しませんでした:私はあなたがフィールドに
True
からattribute_line_ids
product.template
の属性copy
を変更していることを達成できると考えています。なにか提案を?私はまだ同じ行動をしています。 – Trody'product.template'の' copy'メソッドの 'default' dictの' attribute_line_ids'の値を変更していますか?あなたは私が説明した解決策でそれを行う必要はないはずです。私はそれをローカルでテストして、それは私のために働いています(製品属性は複製された時点でコピーされます)。 – Naglis
うん、あなたは正しい。それは今働く。私は本当にあなたの助けに感謝します。それは私に頭痛を与えていた。 – Trody