Html Django上没有

Html Django上没有,html,python-3.x,django,Html,Python 3.x,Django,我正在尝试使用筛选器获取另一个类的id,但由于出现None而无法获取该id 这是使用的方法: def total(self): soma = Venda.objects.filter(id=self.id).aggregate(total=Sum('item__qtde', flat = True)) return soma['total'] 结果 全班以下: class Venda(models.Model): id = models.AutoField(u'AÇ

我正在尝试使用筛选器获取另一个类的id,但由于出现
None
而无法获取该id

这是使用的方法:

def total(self):
    soma = Venda.objects.filter(id=self.id).aggregate(total=Sum('item__qtde', flat = True))
    return soma['total']
结果

全班以下:

class Venda(models.Model):

    id = models.AutoField(u'AÇAIEX', primary_key=True)

    hora_saida = models.TimeField(max_length=6)

    responsavel_frete = models.CharField(max_length=14, verbose_name=u'Resp. Frete', choices = RESPONSAVEL_FRETE, default='REMETENTE')

    empresa = models.ForeignKey(Empresa, on_delete=models.CASCADE)

    localidade_origem = models.ForeignKey(Localidade, on_delete=models.CASCADE, verbose_name=u'Loc. Origem', related_name ='localidade_origem')

    localidade_destino = models.ForeignKey(Localidade, on_delete=models.CASCADE, verbose_name=u'Loc. Destino', related_name ='localidade_destino')  

    cliente_origem = models.ForeignKey(Cliente, on_delete=models.CASCADE, related_name ='cliente_origem')

    cliente_destino = models.ForeignKey(Cliente, on_delete=models.CASCADE, related_name ='cliente_destino')

    carro = models.ForeignKey(Carro, on_delete=models.CASCADE)

    motorista_principal = models.ForeignKey(Motorista, on_delete=models.CASCADE, related_name ='motorista_principal')

    motorista_reserva = models.ForeignKey(Motorista, on_delete=models.CASCADE , related_name ='motorista_reserva',  null=True, blank=True)

    #valores default

    data_venda = models.DateField(auto_now_add=True, verbose_name=u'Data',)

    situacao_venda = models.CharField(max_length=10, verbose_name=u'Situação', choices = SITUACAO_VENDA, default='ATIVA')  

    #aba de valores teste

    tipo_frete = models.CharField(max_length=10, choices = TIPO_FRETE, default='PAGO')

    dinheiro = models.BooleanField()

    cartao = models.BooleanField()

    cartoes = models.CharField(max_length=30, choices = CARTOES, default='DINNER CLUBS', null=True, blank=True)

    ano_processo = models.CharField(max_length=4, choices = CARTOES, default='VISA', null=True, blank=True)      

   

    #valor_nota = models.DecimalField(verbose_name=u'Valor Nota',

    #                            max_digits=15, decimal_places=2, null=True, blank=True)

    valor_dinheiro = models.DecimalField(verbose_name=u'Valor Dinheiro',

                                 max_digits=15, decimal_places=2,  default=Decimal('0.00'))

    valor_cartao = models.DecimalField(verbose_name=u'Valor Cartão',

                                 max_digits=15, decimal_places=2, default=Decimal('0.00'))

    usuario = models.ForeignKey(User, on_delete=models.CASCADE)

    agencia = models.ForeignKey(Group, on_delete=models.CASCADE, null=True, blank=True)

    #produto = models.ManyToManyField(Produto, blank=False, default=None)



    #staticmethod

    #def autocomplete_search_fields():

    #    return id,



    @staticmethod

    def autocomplete_search_fields():

        return 'id',



    def __str__(self):

        return str(self.id)



    def imprimir(self):

        return mark_safe("<a target='_blank' href='%s'>Imprimir</a>" % self.get_absolute_url())

    imprimir.allow_tags = True



    def get_absolute_url(self):

        return reverse('venda_detail', args=[self.pk, ])



    def get_venda(self):

        return Venda.objects.get(pk=self.pk)

    

    #soma o total de volume no relatorio

    def total(self):

        soma = Venda.objects.filter(id=self.id).aggregate(total=Sum('item__qtde', flat = True))

        return soma['total']



    def valortotal(self):

        soma = Venda.objects.filter(id=self.id).aggregate(valortotal=Sum(F('item__produto__valor') * F('item__qtde'), output_field=FloatField()))

        return soma['valortotal']



    def valortotalnota(self):

        return self.valor_nota   



        

    def valor_nota(self, force_insert=False, force_update=False):

        valor_nota = self.valor_dinheiro + self.valor_cartao 

        return valor_nota

    

    def desconto(self):

        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

        # exemplo de porcetagem return  100 - float(valor_nota.replace(",",".")) * 100 / float(valortotal['valortotal'])

        if self.tipo_frete == 'CORTESIA':

            return 0.00

        else:

            return  Decimal(valortotal['valortotal']) - valor_nota()

        #return  valor_nota()

        #return float(valortotal['valortotal'])

    

    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.")    


class Item(models.Model):

    produto = models.ForeignKey(Produto, on_delete=models.CASCADE, default=None)

    qtde = models.PositiveIntegerField(null=True, blank=False)

    venda = models.ForeignKey(Venda, on_delete=models.CASCADE, default=None)





class Manifesto(models.Model):

    data_venda = models.DateField(default=timezone.now)

    carro = models.ForeignKey(Carro, on_delete=models.CASCADE)

    usuario = models.ForeignKey(User, on_delete=models.CASCADE)
           
    def imprimir(self):
        return mark_safe("<a target='_blank' href='%s'>Imprimir</a>" % self.get_absolute_url())
    imprimir.allow_tags = True  

    def get_absolute_url(self):
        return reverse('manifesto_detail', args=[self.pk, ])

    #sem essa função não aparece as variaveis
    def get_manifesto(self):
        return Manifesto.objects.get(pk=self.pk)

    def total(self):
        soma = Venda.objects.filter(id=self.id).aggregate(total=Sum('item__qtde', flat = True))
        return soma['total']
classvenda(models.Model):
id=models.AutoField(u'AÇAIEX',主键=True)
hora_saida=models.TimeField(最大长度=6)
responsavel\u frete=models.CharField(最大长度=14,详细名称=u'Resp.frete',选项=responsavel\u frete,默认值为'remeente')
empresa=models.ForeignKey(empresa,on_delete=models.CASCADE)
localidade\u origem=models.ForeignKey(localidade,on\u delete=models.CASCADE,verbose\u name=u'Loc.origem',related\u name='localidade\u origem')
localidade\u destino=models.ForeignKey(localidade,on\u delete=models.CASCADE,verbose\u name=u'Loc.destino',related\u name='localidade\u destino')
cliente\u origem=models.ForeignKey(cliente,on\u delete=models.CASCADE,related\u name='cliente\u origem')
cliente\u destino=models.ForeignKey(cliente,on\u delete=models.CASCADE,related\u name='cliente\u destino')
carro=models.ForeignKey(carro,on_delete=models.CASCADE)
motorista\u principal=models.ForeignKey(motorista,on\u delete=models.CASCADE,相关的\u name='motorista\u principal')
motorista\u reserva=models.ForeignKey(motorista,on\u delete=models.CASCADE,related\u name='motorista\u reserva',null=True,blank=True)
#瓦洛雷斯违约
data\u venda=models.DateField(auto\u now\u add=True,verbose\u name=u'data',)
situacao_venda=models.CharField(max_length=10,verbose_name=u'Situaão',choices=situacao_venda,default='ATIVA')
#阿巴德瓦洛雷斯酒店
tipo_frete=models.CharField(最大长度=10,选项=tipo_frete,默认值为'PAGO')
dinheiro=models.BooleanField()
cartao=models.BooleanField()
cartoes=models.CharField(最大长度=30,选择数=cartoes,默认值=‘晚餐俱乐部’,null=True,blank=True)
ano_processo=models.CharField(最大长度=4,选项=CARTOES,默认值=VISA',null=True,blank=True)
#valor_nota=models.DecimalField(详细名称=u'valor nota',
#最大位数=15,小数位数=2,空=真,空=真)
valor_dinheiro=models.DecimalField(详细名称=u'valor dinheiro',
最大位数=15,小数位数=2,默认值为小数('0.00'))
valor_cartao=models.DecimalField(verbose_name=u'valor Cartão',
最大位数=15,小数位数=2,默认值为小数('0.00'))
usuario=models.ForeignKey(用户,on_delete=models.CASCADE)
agencia=models.ForeignKey(组,on_delete=models.CASCADE,null=True,blank=True)
#produto=models.ManyToManyField(produto,blank=False,default=None)
#静力学方法
#def自动完成搜索字段()
#返回id,
@静力学方法
def自动完成搜索字段()
返回'id',
定义(自我):
返回str(self.id)
def IMPIMIR(自我):
返回mark\u safe(“%self.get\u absolute\u url())
imprimir.allow_tags=True
def get_绝对_url(自身):
返回反向('venda_detail',args=[self.pk,])
def get_venda(自我):
返回Venda.objects.get(pk=self.pk)
#soma o总容量不相关
def总计(自身):
soma=Venda.objects.filter(id=self.id).aggregate(总计=Sum('item_uqtde',flat=True))
返回soma['total']
def valortotal(自身):
soma=Venda.objects.filter(id=self.id).aggregate(valortotal=Sum(F('item\u produto\u valor'))*F('item\u qtde'),output\u field=FloatField())
返回soma['valortotal']
def valortotalnota(自身):
回心转意
def valor\u nota(自我,强制插入=错误,强制更新=错误):
勇气=自我。勇气+自我。勇气
回归英勇
def描述(自我):
valortotal=Venda.objects.filter(id=self.id).aggregate(valortotal=Sum(F('item\u produto\u valor'))*F('item\u qtde'),output\u field=FloatField())
勇敢
#示例de porcetagem返回100-浮动(不包括替换(“,”,“))*100/浮动(值总['值总']))
如果self.tipo_frete=='CORTESIA':
返回0.00
其他:
返回小数(valortotal['valortotal'])-valor_nota()
#返回valor_nota()
#返回浮动(valortotal['valortotal'])
def清洁(自身,*args,**kwargs):
valortotal=Venda.objects.filter(id=self.id).aggregate(valortotal=Sum(F('item\u produto\u valor'))*F('item\u qtde'),output\u field=FloatField())
勇敢
#如果十进制(valortotal['valortotal'])
@Jallisson我没有看到你有一个模型,但我认为在你的Sum()中不存在flat=True。加上什么是qtde

如果你只做Sum('item')而不是Sum('item_u_uqtde'),它是m
 def total(self):
        soma = Venda.objects.filter(id=self.id).aggregate(total=Sum('item__qtde', flat = True))
        return soma['total']