Django 2.1、python3.6
我有两个模型
house = (
('Clubs','Clubs'),
('Diamonds','Diamonds'),
('Hearts','Hearts'),
('Spades','Spades'),
)
class Card(models.Model):
id = models.CharField(max_length=36, blank=False, primary_key=True)
card = models.CharField(max_length=15, blank=False)
number = models.IntegerField(default=1)
house = models.CharField(choices=house)
class Deck(models.Model):
id = models.CharField(max_length=50, primary_key=True)
name = models.Charfield(...)
card = models.ManyToManyField(Card, through='DeckCard')
class DeckCard(models.Model):
deck = models.ForeeignKey(Deck, on_delete=models.cascade)
card = models.ForeignKey(Card, on_delete=models.CASCADE)
@property
def number_sum(self):
self._number_sum= self.card.aggregate(total=models.Sum('number'))['total']
return number_sum
属性字段
number_sum
成功返回正确的计数。不过,我现在想按
house
卡看起来应该在哪里
id...name........number...house
1....ace_diamonds..1......diamonds
2....two_diamonds..2......diamonds
3....three_diamonds..3....diamonds
4....four_diamonds...4....diamonds
...
52...king_Spades...13....spades
甲板看起来像
id...name
1...johnsdeck
2...bettysdeck
假设DeckCard如下所示
deck..card
1...ace_diamonds
1...two_diamonds
1...ace_diamonds (yes there can be duplicates)
1...three_hearts
2...ace_hearts
Deck
是每个人的一套卡片。
DeckCard
是牌堆里的实体牌。和
Card
包含卡上的属性。
所以在这个例子中,我希望有一个总计数和每个房子的计数
甲板1
总计:7(1+2+1+3)
心脏:3
黑桃:0
甲板2
总计:1
红心:1
self._number_sum= self.card.aggregate(total=models.Sum('number'))
group by
这样除了总数之外,我还可以计算每间房子的总数。有人知道怎么做吗。
{
card: ...
numbers: {
Total:1
Diamonds:4
Clubs:0
Hearts:3
Spades:0
}
}
但这不是为了这个问题。我敢肯定最好放在
@property