【发布时间】:2021-06-29 21:44:12
【问题描述】:
stackoverflow 上有很多与自定义字段相关的答案,但是在尝试使用它们时,我得到了不同的错误,所以发布一个单独的问题。
我想为以下网址返回 JSON 响应
urls.py
path('cards/<int:pk>/smarts', smarts.as_view(), name="smarts"),
我将使用下面的 api.py 文件使用 Transaction 模型返回聚合字段,查询工作正常,我只需要返回适当的响应。在这里,我将其中一个字段设为 Decimal,因此尝试使用 DjangoJSONEncoder 但出现错误。
api.py
class smarts(generics.ListAPIView):
serializer_class = TransactionSerializer
permission_classes = [permissions.IsAuthenticated, TransactionIsOwnerOrNot]
def get_queryset(self):
card = get_object_or_404(self.request.user.cards, pk=self.kwargs['pk'])
qs=card.transactions.values('vendor').annotate(a=Count('pk'),b=Sum('amount')).order_by('-b')
....CODE REQUIRED
return ....
models.py
class Transactions(models.Model):
amount = models.DecimalField(max_digits=19, decimal_places=2)
vendor = models.CharField(max_length=200)
category = models.CharField(max_length=200)
owner = models.ForeignKey(Cards, on_delete=models.CASCADE, related_name="transactions",null=True)
serializer.py
class TransactionSerializer(serializers.ModelSerializer):
class Meta:
model = Transactions
fields = '__all__'
【问题讨论】:
标签: json python-3.x rest django-models django-rest-framework