Как получить общую сумму столбцов модели Django через набор запросов

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

Ниже приведено то, что я пробовал, и я получаю эту ошибку: у объекта 'QuerySet' нет атрибута 'ticket'

Вот мои модели

class Ticket(models.Model):
    event = models.ForeignKey(Event, on_delete=models.CASCADE)
    price = models.PositiveIntegerField()
    category = models.CharField(max_length=100, choices=PASS, default=None, blank=False, null=False)
    added_date = models.DateField(auto_now_add=True)

    def __str__(self):
        return f"{self.event} "

    #Prepare the url path for the Model
    def get_absolute_url(self):
        return reverse("ticket-detail", args=[str(self.id)])

    def generate_pin():
        return ''.join(str(randint(0, 9)) for _ in range(6))

class Pin(models.Model):
    ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
    value = models.CharField(max_length=6, default=generate_pin, blank=True)
    added = models.DateTimeField(auto_now_add=True,  blank=False)
    reference = models.UUIDField(primary_key = True, editable = False, default=uuid.uuid4)
    status = models.CharField(max_length=30, default='Not Activated')

    #Save Reference Number
    def save(self, *args, **kwargs):
         self.reference == str(uuid.uuid4())
         super().save(*args, **kwargs) 

    def __unicode__(self):
        return self.ticket

    class Meta:
        unique_together = ["ticket", "value"]

    def __str__(self):
         return f"{self.ticket}"

    def get_absolute_url(self):
        return reverse("pin-detail", args=[str(self.id)])

Вот мой Views.py

from django.db.models import Count, Sum
def profile(request):    
    amount_sold_pins = Pin.objects.filter(status='Activated')
    total_sold_tickets = amount_sold_pins.ticket.price
    total = total_sold_tickets.aggregate(total = 
    Sum('price')).get('total') or 0

context = {
    'guest':reservations,
    'total':total,
}

return render(request, 'user/profile.html', context)

Кто-нибудь, пожалуйста, помогите с лучшим способом получения моих активированных Pin-билетов. Спасибо

Чтобы получить общую стоимость билетов с активированным статусом pin, используйте это.

Ticket.objects.filter(pin__status="Activated").aggregate(
    total=Sum('price')
)['total']

Если просто сколько билетов имеет активированный пин-статус.

Ticket.objects.filter(pin__status="Activated").count()

Ошибка, которую вы видите, связана с тем, что amount_sold_pins является queryset.

amount_sold_pins = Pin.objects.filter(status='Activated')
# amount_sold_pins is a queryset of Pin
total_sold_tickets = amount_sold_pins.ticket.price # the queryset dosen't have a ticket field, the Pins has.
Вернуться на верх