python - 如何为外键添加+按钮,类似于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的屏幕截图
我做错了什么吗?或者没有更好的方法来实现它,但是当我添加一个新访问者时,应该在外键下拉字段中选择它!先感谢您 ...
解决方案
推荐阅读
- ruby - 我可以从它的受让人那里得到变量名吗?
- c - 用于小数据文件 (~10KB) 的快速且强大的校验和算法
- bash - 从 bash 中的原始数据中提取列表,或者只是格式化输出 list_name 后跟列表内容
- reactjs - React 和 TypeScript - 组件
- objective-c - 为什么我不能访问这个指针的值。目标c
- c# - Selenium C# - Web 元素属性存在但找不到?
- c# - 如何添加不使用属性的服务器端验证规则?
- facebook - 使用带有永久页面访问令牌的 Instagram Graph Api 仅适用于某些帐户
- java - 结合 2 个区间
- sql-server - 创建一个只能通过代码更新的只读列