簡體   English   中英

Django - 多個模型字段的總和

[英]Django - add-up Sum of multiple model fields

我如何在這里添加每個模型的總和? 最后,我只想為所有 3 個模型的所有 up_votes /down_votes 設置一個值。 請參閱下面的示例:

def calc_user_feedback():
    users = User.objects.all()
    try:
        for user in users:
            fed_qry_up_votes = Model1.objects.filter(author=user).aggregate(Sum('up_vote')) + \
                               Model2.objects.filter(author=user).aggregate(Sum('up_vote')) + \
                               Model3.objects.filter(author=user).aggregate(Sum('up_vote'))
            fed_qry_down_votes = Model1.objects.filter(author=user).aggregate(Sum('down_vote')) + \
                               Model2.objects.filter(author=user).aggregate(Sum('down_vote')) + \
                               Model3.objects.filter(author=user).aggregate(Sum('down_vote'))

            logger.info("Overall user feedback calculated successfully.")
    except:
        logger.info("Error processing task: 'Calculate user feedback', please investigate")

假設author在每個模型上都沒有設置related_name

from django.db.models import F, Sum

users = (
    User.objects.annotate(up_votes_1=Sum("model1_set__up_vote"))
    .annotate(up_votes_2=Sum("model2_set__up_vote"))
    .annotate(up_votes_3=Sum("model3_set__up_vote"))
    .annotate(total=F("up_votes_1") + F("up_votes_2") + F("up_votes_3"))
)

現在您可以遍歷用戶並獲得每個用戶的總數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM