Заставьте django-admin-sortable и django-parler работать вместе

У меня есть две модели с отношением многие ко многим, используя through Таблица

# models.py

class Item(TranslatableModel):
    name = models.CharField(max_length=100)  # this one is translatable

class Person(TranslatableModel):
    name = models.CharField(max_length=100)  # this one is translatable
    items = models.ManyToManyField(
        'Item',
        through='PersonItem',
    )


class PersonItem(Sortable):

    class Meta(Sortable.Meta):
        ordering = ['order']

    person = models.ForeignKey('Person')
    item = SortableForeignKey('Item')

Но я не могу отсортировать Itemв админке

# admin.py

class PersonItemInline(TranslatableTabularInline, SortableTabularInline):
    model = PersonItem
    form = PersonItemForm
    extra = 1

class PersonAdmin(TranslatableAdmin):
    form = PersonForm
    inlines = [
        PersonItemInline
    ]


admin.site.register(Person, PersonAdmin)

Когда я наследую от translatable Сначала я теряю функцию сортировки. Когда я пытаюсь унаследовать от sortable сначала у меня следующая ошибка

NoReverseMatch Реверс для person_person_do_sorting с аргументами (239,) и ключевыми словами {{}'не найден. 0 шаблон (ов) пытались: []

Конверт (Python 3):django==1.10.7, django-parler==1.6.5, django-admin-sortable==2.0.19

1 ответ

Решение

@ наиболее разыскиваемый, убедитесь, что порядок отсутствия помех правильный:

class PersonItemInline(SortableTabularInline, TranslatableTabularInline):
    ...
class PersonAdmin(SortableAdmin, TranslatableAdmin):
    ...

и переопределить change_form_template_extends в PersonAdmin класс как это:

class PersonAdmin(SortableAdmin, TranslatableAdmin):
    change_form_template_extends = 'admin/parler/change_form.html'
Другие вопросы по тегам