Python 如何自定义设置django管理员排序字段?
管理员Python 如何自定义设置django管理员排序字段?,python,django,Python,Django,管理员 class MovieItemInline(AjaxSelectAdminTabularInline): model = MovieItem ordering = ['-date'] class MovielistAdmin(ModelAdminBase, AjaxSelectAdmin): inlines = (MovieItemInline, ) admin.site.register(Movielist, MovielistAdmin) model
class MovieItemInline(AjaxSelectAdminTabularInline):
model = MovieItem
ordering = ['-date']
class MovielistAdmin(ModelAdminBase, AjaxSelectAdmin):
inlines = (MovieItemInline, )
admin.site.register(Movielist, MovielistAdmin)
models.py
class MovieItem(Model):
title = CharField(default="")
view_number = IntegerField(default=0)
price = IntegerField(default=0)
date = IntegerField(default=0)
class Movielist(Model):
title = CharField(default="")
display_order = CharField(default="date")
MovieItemInline是MovielistAdmin的内联属性,
我想对电影项目进行分类,例如,
如果Movielist.display_order等于“date”,则按MovieItem.date对MovieItem进行排序。
如果Movielist.display\u order等于“price”,则按MovieItem.price对MovieItem进行排序。
如果Movielist.display\u order等于“view\u number”,则按MovieItem.view\u编号对MovieItem进行排序。
我该怎么办?
django是否支持?您可以在MovieItemInline
类中重写该方法
from django.urls import resolve
def get_ordering(self, request):
# get Movielist object instance from request
object_id = resolve(request.path).args[0]
# retrieve Movielist object
movie_list = MovieList.objects.get(id=object_id)
# modify ordering based on movie_list display_order value
if movie_list.display_order == 'date':
return ['-date']
elif movie_list.display_order == 'price':
return ['-price']
elif movie_list.display_order == 'view_number':
return ['-view_number']
# fallback value if non of the above match
return ['-title']
我也有同样的问题。下面的答案帮助你解决了问题吗?@nik_m,对不起,没有。为什么?应该是。我在本地测试过,效果很好。你有什么错误吗?@nik_m,成功了。谢谢