微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django admin list_display 不显示模型方法返回项

如何解决Django admin list_display 不显示模型方法返回项

我无法获得 admin 的 list_display 以显示来自模型方法的信息,但相同的方法在更改页面上的字段集中显示良好。我想我已经解决了关于这个主题的其他问题/答案中存在的所有错误,但我似乎无法弄清楚我做了什么。任何帮助将不胜感激。

管理员

class StudentAdminConfig(admin.ModelAdmin):
    list_dispaly = ('name','get_total_funds')
    fieldsets=(
        (None,{'fields': ('name','get_total_funds')}),)
    readonly_fields = ('get_total_funds',)

admin.site.register(Student,StudentAdminConfig)

型号: (注意:还有另一个模型 FundsEvent 与 Student 具有多对多关系)

class Student(models.Model):

    name = models.CharField(max_length=255)

    def get_total_funds(self):
        events = self.get_funds_events()
        total = float(0)
        for event in events:
            if event.income:
                total += float(event.amount)
            else:
                total -= float(event.amount)
        return f'${total:.2f}'
    get_total_funds.short_description = "Total Funds"

    def get_funds_events(self):
        return FundsEvent.objects.filter(students_attended=self)

    def __str__(self):
        return self.name

这个 list_display 问题的烦人之处在于它没有给出任何我可以追溯的错误,它只是显示没有“总资金”列的页面。 此外,我已经花了很多时间在这功能上,它甚至不是一个重要的功能,对我来说只是一种方便,因为我实际上是唯一一个在这个特定项目中查看此显示的人,但我我投入的足够多,我真的很想弄清楚,哈哈。

再次感谢。

解决方法

如果你修正了错字会怎样

class StudentAdminConfig(admin.ModelAdmin):
    list_dispaly = ('name','get_total_funds')
    fieldsets=(
        (None,{'fields': ('name','get_total_funds')}),)
    readonly_fields = ('get_total_funds',)

admin.site.register(Student,StudentAdminConfig)

实现:

class StudentAdminConfig(admin.ModelAdmin):
    list_display = ('name',StudentAdminConfig)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。