Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何自定义设置django管理员排序字段?_Python_Django - Fatal编程技术网

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,成功了。谢谢