【发布时间】:2020-01-31 15:00:24
【问题描述】:
view.py
class charity_totals(generics.ListAPIView):
serializer_class= CharityTotalSerializer
queryset=Transaction.objects.all()
def get_queryset(self):
queryset = super().get_queryset()
user_id = self.request.GET.get('userID')
if user_id is None:
return queryset
queryset = queryset.filter(userID=user_id)
return queryset.values('charityID').annotate(total_donation=Sum('transactionAmount'))
serializer.py
class CharityTotalSerializer(ModelSerializer):
charity_name= serializer.ReadOnlyField(source='charityID.charityName')
total_donation= serializer.DecimalField(max_digits=64,decimal_places=2)
class Meta:
model = Transaction
fields = ['charity_name','total_donation']
型号
class Transaction(models.Model):
transactionAmount = models.DecimalField(max_digits=6, decimal_places=2)
userID = models.ForeignKey(User,on_delete=models.CASCADE)
charityID = models.ForeignKey(Charity,on_delete=models.CASCADE, related_name='charity_set')
processed = models.BooleanField(auto_created=True, default=False)
transactionDate = models.DateField(auto_now_add=True)
关闭诸如 http://localhost:8000/requests/charitytotal/?userID=1 这样的请求,我的 json 响应仅限于 [{"total_donation":"3.00"},{"total_donation":"17.00"}] 并且不包括慈善机构名称在序列化程序中指定。据我了解,.values 应该返回charityID 和指定的total_donation 的字典,它们应该能够与我的序列化程序交互。任何见解将不胜感激
【问题讨论】:
标签: django django-rest-framework