Django管理员:按变更列表中的多个字段排序

Django管理员:按变更列表中的多个字段排序,django,admin,Django,Admin,我有一个简单的民意调查应用程序,其模型如下: class Question(models.Model): text = models.CharField(max_length=250) position = models.PositiveIntegerField(default=0) class Variant(models.Model): question = models.ForeignKey(Question, related_name=u"variants")

我有一个简单的民意调查应用程序,其模型如下:

class Question(models.Model):
    text = models.CharField(max_length=250)
    position = models.PositiveIntegerField(default=0)

class Variant(models.Model):
    question = models.ForeignKey(Question, related_name=u"variants")
    text = models.CharField(max_length=250)
    position = models.PositiveIntegerField(default=0)
我希望这些变体在管理变更列表中首先按问题排序,然后按位置排序,这样它们就不会与其他问题的变体混淆。但在ModelAdmin中简单地指定一个顺序是无效的:

class VariantAdmin(admin.ModelAdmin):
    list_display = ['text', 'question', 'position']
    ordering = ['question', '-position']
尽管有“问题”排序,位置较大的变体仍列在上面


有没有办法做到这一点?

在写这个问题的过程中,我试图找到解决办法,最终找到了

模型“Variant”在元类中指定了顺序:

class Variant(models.Model):
    question = models.ForeignKey(Question, related_name=u"variants")
    text = models.CharField(max_length=250)
    position = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ['-position']
这将覆盖模型管理中的排序集。删除此项后,所有项都按预期开始工作