1
我想製作一個應用程序,讓人們可以組成團隊一起購買物品。我需要一種方式來看看有多少人已經在購買。我有以下models.py:Django:如何計算數據庫中與另一個對象相關的對象的數量?
from django.db import models
class Buyer(models.Model):
''' Buyer of the item '''
first_name = models.CharField(max_length=40)
last_name = models.CharField(max_length=40)
email = models.EmailField()
# Pieces together full name from first and last
def full_name(self):
return "%s %s" % self.first_name, self.last_name
# String representation of buyer in the format 'firstname lastname (email)'
def __unicode__(self):
return "%s (%s)" % self.full_name, self.email
class Item(models.Model):
'''The item being purchased'''
name = models.CharField(max_length=50)
description = models.TextField()
price = models.DecimalField(max_digits=6, decimal_places=2)
# The number of items to be split
quantity = models.IntegerField()
pub_date = models.DateTimeField('Date Offered')
# Expiration of the item on offer
expires = models.DateField()
# Relates item to buyers
buyers = models.ManyToManyField(Buyer)
# Calculates remaining slots
def remaining(self):
# How do I do this?
# String representation of item using item name
def __unicode__(self):
return self.name
我知道概念,我只是需要採取的數量在要約和減去購買者的數量,但我真的不知道如何做到這一點。根據我讀過的內容,似乎我可以用類似這樣的方式做到這一點:
def remaining(self):
return self.objects.aggregate(Count('buyers'))
雖然我不是很有信心。任何人都可以用最好的方法幫助我嗎?
我想這似乎比應該得到的要難得多。我會嘗試這個解決方案。謝謝您的幫助! – raddevon 2011-06-16 00:31:23
沒問題,祝你好運!如果您不介意,請點擊綠色複選標記。謝謝! – eruciform 2011-06-17 19:01:35