Headmaster
Headmaster

Reputation: 2322

Add custom field to wagtailadmin ModelAdmin

I'm trying to add a custom field to wagtail ModelAdmin, but not sure how to do that. I tried

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

But looks like I go in wrong direction, and such can be achieved in ModelAdmin itself

Upvotes: 0

Views: 36

Answers (1)

Vorletzter
Vorletzter

Reputation: 13

It looks like you put everything in the same file.

The FootballMapAdminForm should go into views.py

And everything related to FootballMapAdminSite(ModelAdmin) into wagtail_hooks.py (needs to be created) within your Apps Folder.

Upvotes: 0

Related Questions