Редактирование полей many_to_many в панели admin_panel __init__() принимает 13 позиционных аргументов, но было задано 14

Я искал способ редактирования, отображения и удаления при использовании M2M полей в панели администратора. на основе How To Edit ManyToManyField In Django Admin list Display Page? . При адаптации к моему проекту я столкнулся с ошибкой init() принимает 13 позиционных аргументов, но было задано 14 класс app.admin app.admin

class ReceptChangeList(ChangeList):
def __init__(self,
             request,
             model,
             list_display,
             list_display_links,
             list_filter,
             date_hierarchy,
             search_fields,
             list_select_related,
             list_per_page,
             list_max_show_all,
             list_editable,
             model_admin):

    super(ReceptChangeList, self).__init__(request,
                                           model,
                                           list_display,
                                           list_display_links,
                                           list_filter,
                                           date_hierarchy,
                                           search_fields,
                                           list_select_related,
                                           list_per_page,
                                           list_max_show_all,
                                           list_editable,
                                           model_admin)

    # these need to be defined here, and not in MovieAdmin
    self.list_display = ['action_checkbox', 'name', 'ingredient']
    self.list_display_links = ['name']
    self.list_editable = ['ingredient']

@admin.register(Recept)
class ReceptAdmin(admin.ModelAdmin):
#list_display = ('author','name','description',)

def get_changelist(self, request, **kwargs):
    return ReceptChangeList

def get_changelist_form(self, request, **kwargs):
    return ReceptChangeListForm

app.forms

from django import forms
from api.models import Ingredient


class ReceptChangeListForm(forms.ModelForm):

ingredient = forms.ModelMultipleChoiceField(
             queryset=Ingredient.objects.all(),
             required=False)

Посмотрев на исходный код Django для класса , вы ChangeList выглядите следующим образом для __init__ версии 4.0:

def __init__(self, request, model, list_display, list_display_links,
             list_filter, date_hierarchy, search_fields, list_select_related,
             list_per_page, list_max_show_all, list_editable, model_admin, sortable_by,
             search_help_text):

А это для 3.2:

def __init__(self, request, model, list_display, list_display_links,
             list_filter, date_hierarchy, search_fields, list_select_related,
             list_per_page, list_max_show_all, list_editable, model_admin, sortable_by):

В зависимости от версии вашего Django, проверьте, что вы используете правильные параметры.

Вернуться на верх