Python django管理列表显示从多到多的排序
请帮助我解决一个问题,我尝试了很多,但不幸的是找不到解决方案 我的密码在下面 型号.pyPython django管理列表显示从多到多的排序,python,django,django-admin,Python,Django,Django Admin,请帮助我解决一个问题,我尝试了很多,但不幸的是找不到解决方案 我的密码在下面 型号.py class MeasuredController(MeasuredObject): ..... tempraturemeasure = models.ManyToManyField(MeasuredTemperature, blank=True, null=True) ..... class MeasuredTemperature(Meas
class MeasuredController(MeasuredObject):
.....
tempraturemeasure = models.ManyToManyField(MeasuredTemperature, blank=True, null=True)
.....
class MeasuredTemperature(MeasuredObject):
......
temperature = models.DecimalField(max_digits=6,decimal_places=1,verbose_name='Temperature[C]') .....
class MeasuredControllerAdmin( admin.ModelAdmin):
list_display = ('tem0', 'tem1', 'tem2')
def tem2(self, obj):
...............
return obj.tempraturemeasure.filter(deviceindex="2").latest("senddate").temperature
.......
def tem1(self, obj):
...............
return obj.tempraturemeasure.filter(deviceindex="1").latest("senddate").temperature
.......
def tem0(self, obj):
...............
return obj.tempraturemeasure.filter(deviceindex="0").latest("senddate").temperature
.......
admin.py
class MeasuredController(MeasuredObject):
.....
tempraturemeasure = models.ManyToManyField(MeasuredTemperature, blank=True, null=True)
.....
class MeasuredTemperature(MeasuredObject):
......
temperature = models.DecimalField(max_digits=6,decimal_places=1,verbose_name='Temperature[C]') .....
class MeasuredControllerAdmin( admin.ModelAdmin):
list_display = ('tem0', 'tem1', 'tem2')
def tem2(self, obj):
...............
return obj.tempraturemeasure.filter(deviceindex="2").latest("senddate").temperature
.......
def tem1(self, obj):
...............
return obj.tempraturemeasure.filter(deviceindex="1").latest("senddate").temperature
.......
def tem0(self, obj):
...............
return obj.tempraturemeasure.filter(deviceindex="0").latest("senddate").temperature
.......
我的问题是,是否可以对管理中的
tem0
,tem1
,tem2
列进行排序您可以通过创建子查询来实现这一点,尝试如下
class MeasuredControllerAdmin( admin.ModelAdmin):
list_display = ('tem0', 'tem1', 'tem2')
def tem2(self, obj):
...............
return obj.tempraturemeasure.filter(deviceindex="2").latest("senddate").temperature
.......
def tem1(self, obj):
...............
return obj.tempraturemeasure.filter(deviceindex="1").latest("senddate").temperature
.......
def tem0(self, obj):
...............
return obj.tempraturemeasure.filter(deviceindex="0").latest("senddate").temperature
.......
def get_queryset(self, request):
qs = super(MeasuredControllerAdmin, self).get_queryset(request)
qs = qs.extra(
select = {
"tem2" : "<sub query for selecting the latest temp2>"),
"tem1" : "<sub query for selecting the latest temp1>"),
sub query for query for selecting the latest temp1"),
"temp0:"<sub query for selecting the latest temp0>")})
tem2.admin_order_field = 'tem2'
tem1.admin_order_field = 'tem1'
tem0.admin_order_field = 'tem0'
class MeasuredControllerAdmin(admin.ModelAdmin):
列表显示=('tem0'、'tem1'、'tem2')
def tem2(自身、obj):
...............
返回对象温度测量过滤器(deviceindex=“2”).最新(“发送日期”).温度
.......
def tem1(自身、obj):
...............
返回对象温度测量过滤器(deviceindex=“1”).最新(“发送日期”).温度
.......
def tem0(自身、obj):
...............
返回对象温度测量过滤器(deviceindex=“0”).最新(“发送日期”).温度
.......
def get_queryset(自我,请求):
qs=super(MeasuredControllerAdmin,self).get\u queryset(请求)
qs=qs.extra(
选择={
“tem2”:“),
“tem1”:“),
用于选择最新时间段的查询的子查询1“,
“temp0:”)})
tem2.admin\u order\u字段='tem2'
tem1.admin\u order\u字段='tem1'
tem0.admin\u order\u字段='tem0'