Есть две разные вещи
def xyz(self, cr, uid, ids, vals, context=None):
Это определение метода, в котором вы указываете значение по умолчанию из parameteres, это означает, когда вы не передавая этот параметр с помощью метода вызова его будет принимать по умолчанию значение для этих параметров.
Click here видеть больше
self.write(cr, uid, ids, vals, context=None)
Этот случай определяет, что вы передаете None в контексте. Это концепция аргумент ключевого слова.
Click here, чтобы увидеть больше
def xyz(self, cr, uid, ids, vals, context=None):
.......
.......
self.write(cr, uid, ids, vals, context=context)
Это показывает, что он не будет принимать по умолчанию ни в контексте только если вы не передавая значение контекста к этому методу XYZ и то же значение прейдут к напишите так, чтобы он не дал вам ошибку.
context = context означает, что контекст имеет значение, назначенное параметру контекста во время вызова, может или не может НЕТ. Попробуйте передать none в XYZ Звонок даст вам такую же ошибку.
def xyz(self, cr, uid, ids, vals, context=None):
.......
.......
self.write(cr, uid, ids, vals, context=None)
Во-вторых, вы всегда передаете никому метод записи, а не контекст = контекст, поэтому нет никаких шансов, кроме none.
В общем случае, когда вы вызываете какой-либо метод, никогда не передавайте None в контекст, просто установите {} (пустой словарь), он не даст вам ошибок как минимум.
И, наконец, почему вы получаете эту ошибку из-за метода записи где-то CONTEXT (фактически передается NONE) используется для этой модели. Если вы хотите знать причину, то вам нужно выяснить, все ли места, где метод записи переопределен для этой модели и где используется контекст.
Вы спрашиваете нас, почему вы написали 'context = None'? – interjay
Почему вы делаете рекурсивный звонок для написания? Вы уверены, что хотите это сделать, или вы пытались перезаписать его? – forvas
Ваш вопрос непонятен, и две функции ниже друг друга с точно такими же параметрами и именем, кажется, плохая идея. –