Django列出自定义排序:我无法使其正常工作

时间:2015-11-28 12:49:49

标签: python django sorting django-admin

我已经阅读了很多与此问题相关的问题,例如How to custom sort a Django queryset,但没有回答。

这是我的模特:

class Groupe(models.Model):
    parents = models.ManyToManyField('self', blank=True,
                                     through='GroupeRelation',
                                     symmetrical=False,
                                     related_name='parent')
    description = models.CharField(max_length=50)

class GroupeRelation(models.Model):
    groupe_parent = models.ForeignKey(Groupe,
                                      related_name='groupe_parent',
                                      verbose_name=_(u'Parent'))
    groupe_enfant = models.ForeignKey(Groupe,
                                      related_name='groupe_enfant',
                                      verbose_name=_(u'Enfant'))

class Mot(models.Model):
    groupes = models.ManyToManyField(Groupe)
    texte = models.CharField(max_length=50)

    def mot_avec_groupe(self):
        return str(self)
    mot_avec_groupe.short_description = _(u'Description')
    mot_avec_groupe.allow_tags = True

    def __str__(self):
        return _(u'{0} / {1}').format(
            u''.join([g.description for g in self.groupes.all()]),
            self.texte
        )

我试图在Mot的管理员中显示一个可排序列,如下所示:

class MotGroupesInline(admin.TabularInline):
    model = Mot.groupes.through
    extra = 0

class MotAdmin(admin.ModelAdmin):
    readonly_fields = ('mot_avec_groupe', )
    fields = ('texte', )
    inlines = (MotGroupesInline,)
    list_display = ('mot_avec_groupe', 'texte')

它已正确显示,但我无法按mot_avec_groupe列排序。我错过了什么?

1 个答案:

答案 0 :(得分:0)

您应该添加此方法as a property

var $boxes = $('#delivery-address-edit-modal .modal-dialog .modal-content .modal-body form label input[type="checkbox"]');

$boxes.each(function() {
  if ($(this).is(":checked")) {
    $(this).closest('label').toggleClass(".checked-checkbox-parent");
  }
});