python - 如何在表单管理员中添加十字以使用 django 添加对象
问题描述
这是我在 admin 中的自定义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'
错误
解决方案
推荐阅读
- android - jetpack compose 可点击点击效果 类似 iOS
- excel - 需要对 VBA 脚本进行一些解释
- javascript - .Replace 不是替换文本
- django - 如何在不使用中间件的情况下从 require_http_methods 重定向?
- android - Sentry Cli - 缺少 proguard 映射文件
- apache-spark - 如何在 mapgroupwithstate 中仅保持状态 100 分钟
- laravel - laravel-pdf 不能正确转换韩语
- python - 阿姆斯壮数替代输出
- html - 以延迟开始的反向垂直动画
- java - 扩展休息控制器和模型在弹簧启动应用程序中不起作用