Как сравнить два поля в CheckConstraint - PullRequest
0 голосов
/ 07 августа 2020

Если это моя модель:

class Bid(models.Model):

    amount = models.DecimalField(max_digits=11, decimal_places=2)
    starting_bid = models.DecimalField(max_digits=11, decimal_places=2, null=True)

Как добавить ограничение, которое проверяет, больше ли поле суммы начальной ставки или равно ей? Вот что у меня сейчас:

class Meta:
    constraints = [
        models.CheckConstraint(check=Q(amount > starting_bid), name='amount_gte_starting_bid')
    ]

Что, конечно, неверно. Спасибо!

1 Ответ

0 голосов
/ 07 августа 2020

Используйте объекты F () для ссылки на поля в вашей модели. Отсюда: https://adamj.eu/tech/2020/03/10/django-check-constraints-sum-percentage-fields/

class Meta:
        constraints = [
            models.CheckConstraint(
                check=models.Q(
                    percent_read >= models.F("starting_bid")     
                    )
                ),
                name="amount_gte_starting_bid",
            )
        ]
...