Django Exécuter des opérations arithmétiques entre les champs


Exemple

F() expressions F() peuvent être utilisées pour exécuter des opérations arithmétiques ( + , - , * etc.) entre les champs de modèle, afin de définir une recherche / connexion algébrique entre elles.

  • Laissez le modèle être:

    class MyModel(models.Model):
        int_1 = models.IntegerField()
        int_2 = models.IntegerField()
    
  • Maintenant nous allons supposer que nous voulons récupérer tous les objets de MyModel tableau qui a les int_1 et int_2 champs satisfont à cette équation: int_1 + int_2 >= 5 . En utilisant annotate() et filter() nous obtenons:

    result = MyModel.objects.annotate(
                 diff=F(int_1) + F(int_2)
             ).filter(diff__gte=5)
    

    result contient désormais tous les objets susmentionnés.

Bien que l'exemple utilise des champs Integer , cette méthode fonctionnera sur tous les champs sur lesquels une opération arithmétique peut être appliquée.