Validação com método clean no Django 2.0

No meu Model tem esse método abaixo:

def clean(self, *args, **kwargs):
        valortotal = Venda.objects.filter(id=self.id).aggregate(valortotal=Sum(F('item__produto__valor') * F('item__qtde'), output_field=FloatField()))
        valor_nota = self.valor_nota
        if Decimal(valortotal['valortotal']) < valor_nota():
         raise forms.ValidationError("O  valor do Tipo de Pagamento (dinheiro + cartão) não pode ser maior que o valor total da nota.")
        #raise forms.ValidationError(Decimal(valortotal['valortotal']))

Mais ao salvar o sistema aparece o erro:

Alguém sabe alguma solução para isso.

Não sei se é isso, mas acho que vai ajudar, há dois possíveis erros.

1°)
Pelo que percebi você está chamando a variável valor_nota criada no construtor (__init__) para sua função clean(), certo?!

A variável valortotal retorna um dicionário.
E a variável valor_nota retorna um valor numérico (provavelmente passado pelo construtor acredito eu).

O problema surge aqui, nesta linha.

O Python esta procurando um método chamado valor_nota() e não a variável interna valor_nota, ou seja, remova os colchetes e tente executar.

2°)
Outro possível erro e me parece bem provável que seja esse o problema, é que sua variável valortotal não está recebendo nenhum valor, ou não tenha a chave 'valortotal', isso explica o NoneType, em outras palavras, o Python não consegue converter um tipo None para um Decimal.