Html Django上没有
我正在尝试使用筛选器获取另一个类的id,但由于出现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Ç
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']