gpt4 book ai didi

python - 通过模型中的方法对 Django 模型进行排序

转载 作者:太空狗 更新时间:2023-10-29 21:53:30 25 4
gpt4 key购买 nike

所以,假设我有这样的模型:

class Foo(Model):
name = CharField(max_length=200)
def latest_comment(self):
try:
object = self.comment_set.latest()
if object:
return object.when_posted.date()
except:
return ""

class Comment(Model):
when_posted = DateTimeField()
text = TextField()

然后这是modelAdmin:

class FooAdmin(ModelAdmin):
list_display = ['name', 'latest_comment']
ordering = ['latest_comment']

admin.site.register(Foo, FooAdmin)

当我访问管理站点时会抛出一个错误,说在 app.Foo 中找不到“latest_comment”。将它放在 list_display 中效果很好。所以,我的问题是:有没有办法通过模型的方法在 list_display 中对模型进行排序?如果是这样,怎么做到的?

最佳答案

我还没有测试代码,但只是作为一个想法来尝试通过使用注释函数覆盖 ModelAdmin 的查询集来对相关字段中的字段进行排序来实现这一点:

class FooAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(FooAdmin, self).queryset(request)

return qs.distinct() \
.annotate(date_of_last_comment=Max('comment__date')) \
.order_by('-date_of_last_comment')

关于python - 通过模型中的方法对 Django 模型进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982337/

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