我如何关联两个表,以知道在Django的manymany字段中包含哪个值?



希望标题不像我想象的那样令人困惑。我目前有一个表PaymentsData:

class PaymentsData(models.Model):
match = models.CharField(max_length=30)
amount = models.DecimalField(default = 0, max_digits = 5, decimal_places = 2)
players = models.ManyToManyField(Profile, blank=True)
playerspaid = models.ManyToManyField(Profile, related_name='paid', blank=True)
datespent = models.DateField('Date Spent')
def __str__(self):
return self.match

该字段用于创建比赛,并包括在球员部分中参加比赛的球员数量,当他们付费时将其移动到playerspaid字段。我想做的是使用一个不同的表,我想单独显示所有的球员,并包括比赛他们需要支付的费用(我们可以通过获取玩家来知道)在PaymentsData如上图所示)。所以它看起来应该像这样:

class PlayersPaymentDetails(models.Model):
player = models.OneToOneField(Profile, on_delete=models.CASCADE)
matches = models.ManyToManyField(PaymentsData, blank=True)
amountdue = models.DecimalField(default = 0, max_digits=5, decimal_places = 2)
PaymentsData中的players字段中,它应该显示该球员被选中的所有比赛和amountdue应该显示玩家总共欠了多少钱。

我已经尝试使用save()自定义模型方法,但是当播放器PaymentsData中取消选择,它不会改变PlayersPaymentDetails表。

希望有人能帮助,谢谢。如果不清楚,请告诉我。

为什么需要另一个表?您可以像这样获得匹配:

player = Profile.objects.get(...) # get the player you want
matches = player.paymentsdata_set.all()

amountdue:

from django.db.models import Sum
player = Profile.objects.get(...) # get the player you want
amountdue = player.paymentsdata_set.all().aggregate(amountdue=Sum('amountdue'))['amountdue']

最新更新