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']))
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.