Hi Simon,
Thanks! Using an ExpressionWrapper does work for this :)
I agree it might be nice to have a bit less boilerplate here. What I'd
first tried was actually:
```
CheckConstraint(check=Q(
is_on_sale=F('price') < F('full_price'),
))
```
It would be great if that could be made to work -
Hi All,
Let try sth like sample:
a = True if b <= c else False
On Tue, Jan 28, 2020, 03:24 Simon Charette wrote:
> I see, I think you'll need to wrap the inner Q in an ExpressionWrapper[0]
>
> That would be
>
> CheckConstraint(check=Q(is_on_sale=ExpressionWrapper(Q(price__lt=F('full_price')),
I see, I think you'll need to wrap the inner Q in an ExpressionWrapper[0]
That would be
CheckConstraint(check=Q(is_on_sale=ExpressionWrapper(Q(price__lt=F('full_price')),
output_field=models.BooleanField(
That involves a lot of boilerplate though and it ought to work without all
of it so
Hi Simon,
Thanks for your response.
I did try that, however unfortunately I get an error when running the
migration:
django.core.exceptions.ValidationError: ["'(AND:
)' value must
be either True or False."]
I'm using Django 2.2 LTS though testing this in 3.0 unfortunately errors in
the same
Hi Stephen,
Thanks for your response.
I agree that using an annotation might be an alternative way to solve this,
however for various reasons that's not suitable for my current use case. I
was also hoping for a general solution which would work for cases where the
expression is more complicate
Did you try
class Item(Model):
price = DecimalField()
full_price = DecimalField()
is_on_sale = BooleanField()
class Meta:
constraints = [
CheckConstraint(check=Q(is_on_sale=Q(price__lt=F('full_price'
]
I haven't tried it myself but I would expect
sorry i diin't read to Stephen his trik is even better hahahaha but with
sigñal yo ca do other thing
El lun., 27 ene. 2020 a las 19:02, DANIEL URBANO DE LA RUA (<
dannybombas...@gmail.com>) escribió:
> you can do few thing at the same time in a model before save or whenever
> you want
>
> El lun.
you can do few thing at the same time in a model before save or whenever
you want
El lun., 27 ene. 2020 a las 19:01, DANIEL URBANO DE LA RUA (<
dannybombas...@gmail.com>) escribió:
> it is goin to be better and less cost for the db
>
> El lun., 27 ene. 2020 a las 19:01, DANIEL URBANO DE LA RUA (<
take a look at this https://docs.djangoproject.com/en/3.0/topics/signals/
El lun., 27 ene. 2020 a las 18:59, Stephen J. Butler (<
stephen.but...@gmail.com>) escribió:
> Frankly, if is_on_sale has such a tight constraint I wouldn't have it as
> its own column. Why not just make it an annotated fi
it is goin to be better and less cost for the db
El lun., 27 ene. 2020 a las 19:01, DANIEL URBANO DE LA RUA (<
dannybombas...@gmail.com>) escribió:
> take a look at this https://docs.djangoproject.com/en/3.0/topics/signals/
>
>
> El lun., 27 ene. 2020 a las 18:59, Stephen J. Butler (<
> stephen.b
Frankly, if is_on_sale has such a tight constraint I wouldn't have it as
its own column. Why not just make it an annotated field with an F
expression?
https://docs.djangoproject.com/en/3.0/ref/models/expressions/#using-f-with-annotations
Item.objects.annotate(is_on_sale=(F('price') < F('full_pric
11 matches
Mail list logo