0

I have two models with many-to-many relation using through table

# 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')

But I am not able to have sorted Items in admin

# admin.py

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

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


admin.site.register(Person, PersonAdmin)

When I inherit from translatable first I lose sorting feature. When I'm trying to inherit from sortable first I have following error

NoReverseMatch Reverse for 'person_person_do_sorting' with arguments '(239,)' and keyword arguments '{}' not found. 0 pattern(s) tried: []

Env (python 3): django==1.10.7, django-parler==1.6.5, django-admin-sortable==2.0.19

4

1 回答 1

1

@most-wanted 确保继承顺序正确:

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'
于 2018-05-11T09:33:14.980 回答