Сложите django полей из нескольких моделей - PullRequest
0 голосов
/ 22 января 2020

Мое приложение имеет несколько типов записей, каждый тип записей - это отдельная модель, каждая из этих моделей имеет поля с названиями «up_vote» и «down_vote». Теперь я хочу показать пользователю дополнение всех этих полей, чтобы я вычислил request.user.model1.up_vote + request.user.model2.up_vote + request.user.model3.up_vote и то же для down_vote.

Но я не знаю, как должен выглядеть запрос в моих представлениях. В конце я хочу показать только общее количество голосов вверх / вниз по всем сообщениям, созданным пользователем.

models.py

# code example

class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(verbose_name="Title", max_length=30)
    ...
    up_vote = models.IntegerField(default=0)
    down_vote = models.IntegerField(default=0)


class Post_Vote(models.Model):
    voter = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
    voted = models.ForeignKey(Post, on_delete=models.CASCADE)

    class Meta:
        unique_together = ('voter', 'voted')

thx для чтения:)

1 Ответ

2 голосов
/ 22 января 2020

Вы можете использовать совокупность например

from django.db.models import Sum

user = User.objects.get(...)
up_vote_count = Post.objects.filter(user=user).aggregate(Sum('up_vote'))
down_vote_count = Post.objects.filter(user=user).aggregate(Sum('down_vote'))
...