Добавьте пользовательское поле в МодельАдмина wagtailadmin

Я пытаюсь добавить пользовательское поле в wagtail ModelAdmin, но не уверен, как это сделать. Я пытался

from wagtail_modeladmin.options import ModelAdmin, modeladmin_register
from wagtail_modeladmin.views import EditView
from django import forms
from django.contrib.admin.utils import quote
from wagtail.log_actions import registry as log_registry

from dzen_wagtail.football_maps.models import FootballMap


class FootballMapAdminForm(forms.ModelForm):
    extra_link = forms.URLField(
        label="Extra link",
        widget=forms.URLInput(attrs={"type": "button"}),
    )
    field_order = ["tg", "name", "location", "history", "covering", "extra_link", "status"]

    class Meta:
        model = FootballMap
        fields = ["tg", "name", "location", "history", "covering", "extra_link", "status"]

    def __init__(self, *args, **kwargs):
        super(FootballMapAdminForm, self).__init__(*args, **kwargs)
        self.fields["extra_link"].initial = "https://example.com"


class FootballMapEditView(EditView):
    def get_form(self):
        return FootballMapAdminForm(instance=self.instance)


@modeladmin_register
class FootballMapAdminSite(ModelAdmin):
    model = FootballMap
    menu_label = "Карта коробок"
    menu_icon = "circle-check"
    edit_view_class = FootballMapEditView

    def get_list_display(self, request):
        list_display = ["location", "status"]
        return list_display

Но похоже, что я иду не в том направлении, и такого можно добиться в самом ModelAdmin

Похоже, что вы поместили все в один файл.

Форма FootballMapAdminForm должна находиться в файле views.py

И все, что связано с FootballMapAdminSite(ModelAdmin) в wagtail_hooks.py (должен быть создан) в вашей папке Apps.

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