Как добавить крестик в форме администратора, чтобы добавить объект с Django - PullRequest
0 голосов
/ 04 апреля 2019

Это моя пользовательская django форма в админке:

class Rent_Form(forms.ModelForm):
    seller = forms.ModelChoiceField(queryset=Seller.objects.order_by('name'))
    norm = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,queryset=Norm.objects.order_by('name'),required=False)
    equipment = forms.ModelMultipleChoiceField(queryset=Equipment.objects.order_by('name'),required=False)
    pic = forms.ModelMultipleChoiceField(queryset=Pic.objects.order_by('name'),required=False)
    class Meta:
        model = Rent
        fields = '__all__'

Но в представлении администратора я не вижу зеленый крест, чтобы добавить объект рядом со всей моей таможенной формой.

Как добавить зеленый крестик, чтобы добавить объект с моей формой?

Привет

Редактировать:

Я пробовал это:

import django.contrib.admin.widgets

class MyRelatedFieldWidgetWrapper(django.contrib.admin.widgets.RelatedFieldWidgetWrapper):
    """
    This class is a wrapper to a given widget to add the add icon for the
    admin interface.
    """
    def render(self, name, value, *args, **kwargs):
        rel_to = self.rel.to
        info = (rel_to._meta.app_label, rel_to._meta.model_name)
        self.widget.choices = self.choices
        output = [self.widget.render(name, value, *args, **kwargs)]
        if self.can_add_related:
            related_url = reverse(
                'admin:%s_%s_add' 
                % info, current_app=self.admin_site.name
            )
            output.append(
            """
            <a  href="%s"
                onclick="return showAddAnotherPopup(this);
                alt="%s">

                <i class="help icon-large icon-plus-sign"
                    id="add_id_%s"
                    data-original-title>
                </i>
            </a>""" % (related_url, _('Add Another'), name))
            return mark_safe(''.join(output))

# Monkeypatch it
django.contrib.admin.widgets.RelatedFieldWidgetWrapper = MyRelatedFieldWidgetWrapper

class Rent_Form(forms.ModelForm):
    seller = forms.ModelChoiceField(queryset=Seller.objects.order_by('name'))
    norm = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple,queryset=Norm.objects.order_by('name'),required=False)
    equipment = forms.ModelMultipleChoiceField(queryset=Equipment.objects.order_by('name'),required=False)
    pic = forms.ModelMultipleChoiceField(queryset=Pic.objects.order_by('name'),required=False)
    class Meta:
        model = Rent
        fields = '__all__'
    def __init__(self, *args, **kwargs):
        super(Rent_Form, self).__init__(*args, **kwargs)
        self.fields['norm'].widget = django.contrib.admin.widgets.RelatedFieldWidgetWrapper()

Но у меня есть:

__init__() missing 3 required positional arguments: 'widget', 'rel', and 'admin_site'

Error

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...