gpt4 book ai didi

python - Django 管理列表显示优化查询集

转载 作者:行者123 更新时间:2023-12-03 16:23:39 26 4
gpt4 key购买 nike

User模型我有一个方法:

@cached_property
def income(self):
return PartnerIncome.objects.all().aggregate(Sum('income'))['income__sum']*self.share_of_profit

合作伙伴收入模式:
class PartnerIncome(models.Model):
title = models.CharField(max_length=255)
income = models.FloatField(default=0)

现在我想在 list_display=('income', ) 中显示“收入”在管理面板,但每个对象对数据库进行额外查询。我如何制作 PartnerIncome.objects.all().aggregate(Sum('income'))作为管理员更改列表的全局变量...

最佳答案

只覆盖 get_queryset 怎么样?您的 ModelAdmin 中的方法?

class UserAdmin(admin.ModelAdmin):

list_display = ('income', ...)

def income(self, obj):
return obj.income

def get_queryset(self, request):
queryset = super(UserAdmin, self).get_queryset(request)
# you logic here to `annotate`the queryset with income
return queryset
aggregation 上的文档:

https://docs.djangoproject.com/en/dev/topics/db/aggregation/

没有我真正理解你的模型和业务逻辑......这里是我自己的代码片段作为示例:
class AuthorAdmin(admin.ModelAdmin):
list_display = ('__str__', 'books_count',)

def books_count(self, obj):
return obj.books_count

def get_queryset(self, request):
return super(AuthorAdmin, self).get_queryset(
request).annotate(books_count=Count('books'))

关于python - Django 管理列表显示优化查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28943205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com