Объект типа none не имеет атрибута 'replace'

Я пытаюсь заменить None на 0, но получаю ошибку, так как у типа object нет атрибута 'replace'. Вот что я пробовал

views.py:

def Activity(UserID):

        cursor = connection.cursor()
        cursor.execute('EXEC [dbo].[sp_GetCurrentRunningActivityAudit] @UserId=%s',(UserID,))
        result_set =cursor.fetchall()
        data = []
        for row in result_set:
         
            TaskId = row[0]
            data.append({
            'TaskId':row[0],           
            'TaskName' : row[1],
            'Source' : row[2],
            'Requester' : row[3].replace('None', '0') if row[3] == None else row[3] ,
            'type' : row[4],
            'IsActive':GetCurrentSubTaskSTatus(TaskId),
   
            })
        
            print(data)  
            return Response(data[0], status=status.HTTP_200_OK)

None нет строки с именем 'None', поэтому она не работает

row[3].replace('None', '0') if row[3] == None else row[3]

Размышляйте об этом:

if row[3] == None:
    row[3].replace('None', '0')

Если row[3] является None, то как он может быть strингом? И как она может содержать 'None'?


Вы должны заменить эту часть на следующую:

'0' if row[3] == None else row[3]

Чтобы лучше понять вашу проблему, я бы предложил вам прочитать следующее:

replace - это метод для строк. None не является строкой, это объект NoneType.

Вы можете попробовать следующий код для вашего случая:

'Requester' : row[3] or '0',

Будет использовано значение row[3], если оно не None. В противном случае будет использован '0'

Вернуться на верх