Django - разбивка на страницы для встроенных моделей
Я понимаю, что это, вероятно, ошибка начального уровня, но у меня нет идей. Мне нужно добавить разбивку на страницы во встроенной модели для страницы администратора. Я использую Django 1.8.4 (да, я знаю, что он действительно старый) и python 3.6.15.
Внутри admin.py:
class ArticleInline(GrappelliSortableHiddenMixin, admin.TabularInline):
model = ArticleSection.articles.through
raw_id_fields = ("article",)
related_lookup_fields = {
'fk':['article'],
}
extra = 1
class ArticleSectionsAdmin(reversion.VersionAdmin):
list_display = ('name','slug','template_file_name')
inlines = [ArticleInline]
admin.site.register(ArticleSection,ArticleSectionsAdmin)
Внутри models.py:
class ArticleSection(Section):
articles = models.ManyToManyField(Article, verbose_name=_("article"), through="M2MSectionArticle", related_name="sections")
limit = models.PositiveSmallIntegerField(default=10)
class Meta:
db_table = 'sections_article_section'
verbose_name = _("article section")
verbose_name_plural = _("articles sections")
def content(self, request):
query = Q(m2msectionarticle__visible_to__isnull=True) & Q(m2msectionarticle__visible_from__isnull=True)
query.add(Q(m2msectionarticle__visible_to__gte=timezone.now(), m2msectionarticle__visible_from__lte=timezone.now()), Q.OR)
limit = self.limit_override if hasattr(self,
'limit_override') and self.limit_override is not None else self.limit
return self.articles.filter(query).published().prefetch_related('images').order_by('m2msectionarticle__position')[:limit]
class M2MSectionArticle(models.Model):
section = models.ForeignKey(ArticleSection, related_name='section_articles')
article = models.ForeignKey(Article, verbose_name=_('article'))
position = models.PositiveSmallIntegerField(_("position"), default=0)
visible_from = models.DateTimeField("Widoczne od", null=True, blank=True)
visible_to = models.DateTimeField("Widoczne do", null=True, blank=True)
class Meta:
db_table = 'sections_section_articles'
ordering = ["position"]
Я нашел django-admin-inline-paginator, и, похоже, он работает для всех остальных, но я получаю "Функция имеет параметры или аннотации только для ключевых слов, используйте API getfullargspec(), который может их поддерживать", когда я использую TabularInlinePaginated вместо admin.Табличная строка.
from django_admin_inline_paginator.admin import TabularInlinePaginated
class ArticleInline(GrappelliSortableHiddenMixin, TabularInlinePaginated):
model = ArticleSection.articles.through
raw_id_fields = ("article",)
related_lookup_fields = {
'fk':['article'],
}
extra = 1
per_page = 10
print(inspect.getfullargspec(разбивка таблицы на страницы)) возвращает :
FullArgSpec(args=['self', 'parent_model', 'admin_site'], varargs=None, varkw=None, defaults=None, kwonlyargs=[], kwonlydefaults=None, annotations={})
но я все еще не знаю, что делать.
Это связано с проблемами совместимости между старыми версиями Python и Django при обработке сигнатур функций.. например, related_lookup_fields устарел в Django Admin, так что часть related_lookup_fields = { 'fk': ['article'], }
следует заменить на autocomplete_fields = ["article"]
или просто удалить ее полностью. Итак, в двух словах, это исправит только эту часть, и вам придется просмотреть каждый раздел кода, т.е. просто перейти на более новую версию