Как добавить кнопку + для внешнего ключа, аналогично админке django

я пытаюсь реализовать кнопку + для поля выбора внешнего ключа, если внешний ключ не существует, вместо перехода на другую страницу появляется страница формы для добавления новой записи для внешнего ключа, я реализовал, но она полноразмерная и не переходит на предыдущую страницу, когда я отправляю форму: вот что я пробовал

class RelatedFieldWidgetCanAdd(widgets.Select):
    def __init__(self, related_model, related_url=None, *args, **kw):
        super(RelatedFieldWidgetCanAdd, self).__init__(*args, **kw)
        if not related_url:
            rel_to = related_model
            info = (rel_to._meta.app_label, rel_to._meta.object_name.lower())
            related_url = 'admin:%s_%s_add' % info
            self.related_url = related_url

    def render(self, name, value, *args, **kwargs):
        self.related_url = reverse(self.related_url)
        output = [super(RelatedFieldWidgetCanAdd, self).render(name, value, *args, **kwargs)]
        output.append('<a href="%s?_to_field=id&_popup=1" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> ' % \
            (self.related_url, name))
        output.append('<img src="%sadmin/img/icon_addlink.gif" width="10" height="10" alt="%s"/></a>' % (settings.STATIC_URL, 'Add Another'))
        return mark_safe(''.join(output))

class BookingVisitorForm(forms.ModelForm):
    visitor = forms.ModelChoiceField(
        queryset=Vistor.objects.all().order_by('-pk'),empty_label='--------',
        widget=RelatedFieldWidgetCanAdd(Vistor,related_url='')
    )
    class Meta:
        model = BookingVisitor
        fields = ['visitor','reason']

python 3 django 3.2

может я что-то сделал не так? или есть лучший способ достичь этого, но когда я добавляю нового посетителя, он должен быть выбран в выпадающем поле иностранного ключа! Спасибо заранее...

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