[英]Django ManyToMany Field admin display highest value
我想知道如何在管理员的 ManyToMany 字段中显示“最高值”。 这是我的models.py
文件:
class Personal(models.Model):
lastname = models.CharField(max_length = 100)
firstname = models.CharField(max_length = 100)
degree = models.ManyToManyField('Degree')
def __str__(self):
return self.lastname
class Degree(models.Model):
name_degree = models.CharField(verbose_name = 'Degree', max_length = 200, blank = False)
rank = models.PositiveIntegerField(default = 0)
def __str__(self):
return self.name_degree
在我的支持下,我创建了不同类型的学位,都带有“排名”。 就我而言,您可以获得的最高学位是“博士学位”,排名为“6”。
因此,如果用户在“个人”中创建自己,他将可以选择 select 他已获得的所有学位。 但是对于我的个人列表,我只想看到最高的,例如如果用户选择“学士学位”和“硕士学位”,则个人列表应该只包含“硕士学位”,因为 5 > 4。
有人知道我的admin.py
文件应该是什么样子吗?
class PersonalAdmin(admin.ModelAdmin):
list_display = ('lastname', 'firstname', ) # 'degree'
您可以用最高程度注释QuerySet
,然后定义一个将呈现该最大值的方法:
from django.db.models import Max
class MyModelAdmin(admin.ModelAdmin):
list_display = ['lastname', 'firstname', 'max_degree']
def get_queryset(self, request):
queryset = super().get_queryset(request).annotate(
max_degree=Max('degree__rank')
)
def max_degree(self, obj):
return obj.max_degree
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.