首页 > 解决方案 > 如何为外键添加+按钮,类似于django的admin

问题描述

我正在尝试为外键选择字段实现 + 按钮,如果外键不存在而不是转到另一个页面,只需弹出一个表单页面为外键添加新条目,我已经实现但它的全尺寸和提交表单时不要转到上一页:这是我尝试过的

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的屏幕截图在此处输入图像描述

我做错了什么吗?或者没有更好的方法来实现它,但是当我添加一个新访问者时,应该在外键下拉字段中选择它!先感谢您 ...

标签: pythondjango

解决方案


推荐阅读