While the testcase is simple, it is not the simplest test :)

Two things come to mind:
     1. If you get rid of the Sum(), does it work then?
     2. Saving the model with the base_manager_name should not use that manager 
as related manager. It is only used when a model with a foreign key to 
ProdutoServico 
is saved.
In your original exception, it looks like ProdutoServico extends a model in 
sumario.models and both override the save method:

/home/eltonplima/ssd/repository/planonegocios/marketing/models.py in save
       super().save(*args, **kwargs) ...
▶ Local vars
/home/eltonplima/ssd/repository/planonegocios/sumario/models.py in save
       super().save(*args, **kwargs) ...

Is it possible your problem is in one of those two?

On Tuesday 21 February 2017 16:37:12 eltonplima wrote:
> This is part of my real code but demonstrate the issue in pratice:
> 
> from django.db import models
> 
> class ProdutoServicoManager(models.Manager):
>     def get_queryset(self):
>         custo_unitario = models.F('custounitario__valor')
>         quantidade = models.F('custounitario__quantidade')
>         expression = models.Sum(custo_unitario * quantidade)
>         custo_producao_expr = models.ExpressionWrapper(expression,
> 
>  output_field=models.DecimalField())
>         return
> super().get_queryset().annotate(custo_producao=custo_producao_expr)
> 
> 
> class ProdutoServico(models.Model):
>     produto = models.BooleanField(default=True)
>     descricao = models.TextField()
>     objects = ProdutoServicoManager()
> 
>     class Meta:
>         
#################################################
>         # Comment the line below and the test pass.
>         
#################################################
>         base_manager_name = 'objects'
> 
> 
> class CustoUnitario(models.Model):
>     produto_servico = models.ForeignKey(ProdutoServico)
>     item = models.CharField(max_length=128)
>     quantidade = models.PositiveIntegerField()
>     valor = models.DecimalField(max_digits=10,
>                                 decimal_places=4,
>                                 verbose_name='Valor unitário')
> 
> 
> class Faturamento(models.Model):
>     produto_servico = models.OneToOneField(ProdutoServico)
>     quantidade = models.PositiveIntegerField()
>     preco_unitario = models.DecimalField(max_digits=10,
> decimal_places=2)
> 
> # We need only a single simple test to demonstrate this issue.
> 
> from django.test import TestCase
> from django.db import utils
> 
> from model_mommy import mommy
> 
> from core import models
> 
> class FaturamentoTest(TestCase):
> 
>     def test(self):
>         faturamento = mommy.make(models.Faturamento)
>         produto = faturamento.produto_servico
>         try:
>             produto.save()
>         except utils.OperationalError:
>             self.fail("Whats wrong?")
> 
> On Tuesday, February 21, 2017 at 9:01:50 AM UTC-3, Melvyn Sopacua wrote:
> > On Monday 20 February 2017 17:09:40 eltonplima wrote:
> > > Base class is abstract.
> > > 
> > > 
> > > 
> > > class Base(models.Model):
> > > 
> > > plano = models.ForeignKey(Plano)
> > > 
> > > 
> > > 
> > > 
> > > 
> > > class Meta:
> > > 
> > > abstract = True
> > > 
> > > 
> > > 
> > > 
> > > 
> > > base_manager_name
> > > 
> > > <https://docs.djangoproject.com/en/1.10/ref/models/options/#base-m
> > > anag
> > > 
> > > er-name>
> > 
> > Ack, my brain kept reading "default_manager_name".
> > 
> > Still - without a ForeignKey this shouldn't break anything. It seems
> > it warrents a new bug report, but I'm curious where things break.
> > It looks like this model is used as an inline in the admin. Is that
> > correct?
> > 
> > 
> > 
> > I cannot reproduce this with a simple test case:
> > 
> > 
> > 
> > models:
> > 
> > class CartEntryManager(models.Manager):
> > def get_queryset(self):
> > qs = super(CartEntryManager, self).get_queryset()
> > expression = models.F('quantity') * models.F('price')
> > wrapped = models.ExpressionWrapper(expression,
> > output_field=models.DecimalField(
> > max_digits=20, decimal_places=2))

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/186009608.yBrPArMdij%40devstation.
For more options, visit https://groups.google.com/d/optout.

Reply via email to