【问题标题】:Make django-admin-sortable and django-parler work together让 django-admin-sortable 和 django-parler 一起工作
【发布时间】:2018-04-16 13:11:19
【问题描述】:

我有两个使用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')

但我无法在管理员中对Items 进行排序

# 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.7django-parler==1.6.5django-admin-sortable==2.0.19

【问题讨论】:

标签: django python-3.x django-forms django-admin django-parler


【解决方案1】:

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

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

并像这样在 PersonAdmin 类中覆盖 change_form_template_extends

class PersonAdmin(SortableAdmin, TranslatableAdmin):
    change_form_template_extends = 'admin/parler/change_form.html'

【讨论】:

  • 确保顺序正确并添加自定义 change_form 模板(结合了可排序和可翻译)完成了工作。
猜你喜欢
  • 2011-12-09
  • 1970-01-01
  • 2017-06-11
  • 2018-01-26
  • 2017-09-19
  • 2023-01-16
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多