代码之家  ›  专栏  ›  技术社区  ›  lakenen

如何为整数过滤django queryset(DecimalField)

  •  1
  • lakenen  · 技术社区  · 6 年前

    amount ( DecimalField(decimal_places=2) )字段。我想过滤queryset以排除任何数量不是整数(整数)值的行。

    有效值示例: 1.00 125.00

    无效值示例: 0.99 , 14.01

    是否有任何功能可以让我执行以下操作:

    qs = qs.filter(amount=floor(F('amount')))
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   willeM_ Van Onsem    6 年前

    ,您可以利用 Floor function [Django-doc]

    from django.db.models.functions import Floor
    
    qs.filter(amount=Floor('amount'))

    对于最近的Django版本,您可以自己实现此函数,就像在中实现的那样 Django-2.2 [GitHub] :

    class Floor(Transform):
        function = 'FLOOR'
        lookup_name = 'floor'