【发布时间】:2021-11-30 03:32:27
【问题描述】:
我想为查询集中的每条记录查找一个值,并将该值添加到查询集中。 我有以下看法。
class InvoiceViewSet(ModelViewSet):
queryset = Invoice.objects.all()
serializer_class = InvoiceSerializer
def get_queryset(self):
user = self.request.user
customer_id = Customer.objects.only('ref').get(user_id=user.id)
queryset = Invoice.objects.filter(supplier_id=customer_id.ref)
for invoice in queryset:
program = FunderProgramMember.objects.get(supplier=invoice.supplier_id, buyer=invoice.buyer)
invoice.annotate(discount_rate=Value(program.discount_rate))
return queryset
由于查询集中的发票可能有不同的折扣,我遍历查询集并添加相关折扣。
我收到以下错误:“发票”对象没有属性“注释” 我可以对查询集进行注释(这对我没有帮助,因为查询集中的记录不会都有相同的折扣)但似乎我无法对查询集中的记录进行注释。
还有其他方法可以实现吗? 即使我可以对单个记录进行注释,我也不确定这些值是否会与我的返回查询集一起传递?
编辑: 不确定这是否是最好的方法..但它似乎有效:
class InvoiceViewSet(ModelViewSet):
queryset = Invoice.objects.all()
serializer_class = InvoiceSerializer
def get_queryset(self):
user = self.request.user
customer_id = Customer.objects.only('ref').get(user_id=user.id)
queryset = Invoice.objects.filter(supplier_id=customer_id.ref)
for invoice in queryset:
program = FunderProgramMember.objects.get(supplier=invoice.supplier_id, buyer=invoice.buyer)
invoice.discount_rate = program.discount_rate
return queryset
【问题讨论】:
标签: python django-models django-rest-framework django-queryset