例如,我有一个这样的模型:
class Wheel(models.Model): wheel = models.CharField(max_length=20) class Vehicle(models.Model): wheel = models.ForeignKey(Wheel)
当我制作一个新的车辆时,我希望在我的方向盘区域旁边出现一个绿色的加号,允许我添加新的方向盘示例。我对django还很陌生,所以我不知道这是否可行。任何帮助都是非常感谢的!
xlpyo6sf1#
如果你在admin部分之外实现表单,你需要一个类似于django. contrib. admin. widgets. RelatedFieldWidgetWrapper的自定义小部件 Package 器。
from .models import Owner from .widgets import AddAnotherWidgetWrapper # our custom widget wrapper class PickOwnerForm(forms.Form): owner = forms.ModelChoiceField( queryset=Owner.objects.all().order_by('name'), widget=AddAnotherWidgetWrapper(forms.Select(),Owner, ) )
在您的实现中,将“Owner”替换为您要链接到的模型。您可以在-https://gist.github.com/ebrelsford/5263306中找到定制的小部件 Package 器沿着完整的示例
q7solyqu2#
检查小部件django.contrib.admin.widgets.RelatedFieldWidgetWrapper,Django管理员用它来添加功能性的'+'标记。为了在自定义表单中使用小部件,需要提供用于Wheel添加页面的admin_site参数。
django.contrib.admin.widgets.RelatedFieldWidgetWrapper
admin_site
1wnzp6jl3#
默认情况下,只有"editable = True"的字段才会添加到管理页面:ModelAdmin.fields
class Wheel(models.Model): wheel = models.CharField(max_length=20, editable=True) class Vehicle(models.Model): wheel = models.ForeignKey(Wheel, editable=True)
li9yvcax4#
下面是一个如何在admin**之外使用RelatedFieldWidgetWrapper**和AutocompleteSelect(当然也可以是Select)的例子。这也展示了如何根据需要包含js和css:
RelatedFieldWidgetWrapper
AutocompleteSelect
Select
from django import forms from django.contrib.admin import site as admin_site from django.contrib.admin import widgets class MyModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) db_field = self.instance._meta.get_field("related") self.fields["related"] = ModelChoiceField( self.fields["related"].queryset, widget=AutocompleteSelect(db_field, admin_site), ) self.fields["related"].widget = widgets.RelatedFieldWidgetWrapper( widget=self.fields["related"].widget, rel=db_field.remote_field, admin_site=admin_site, ) class Meta: model = MyModel fields = ("related",) class Media: js = [ "admin/js/jquery.init.js", "admin/js/admin/RelatedObjectLookups.js", ] css = {"all": ("admin/css/forms.css",)}
4条答案
按热度按时间xlpyo6sf1#
如果你在admin部分之外实现表单,你需要一个类似于django. contrib. admin. widgets. RelatedFieldWidgetWrapper的自定义小部件 Package 器。
在您的实现中,将“Owner”替换为您要链接到的模型。
您可以在-https://gist.github.com/ebrelsford/5263306中找到定制的小部件 Package 器沿着完整的示例
q7solyqu2#
检查小部件
django.contrib.admin.widgets.RelatedFieldWidgetWrapper
,Django管理员用它来添加功能性的'+'标记。为了在自定义表单中使用小部件,需要提供用于Wheel添加页面的
admin_site
参数。1wnzp6jl3#
默认情况下,只有"editable = True"的字段才会添加到管理页面:
ModelAdmin.fields
li9yvcax4#
下面是一个如何在admin**之外使用
RelatedFieldWidgetWrapper
**和AutocompleteSelect
(当然也可以是Select
)的例子。这也展示了如何根据需要包含js和css: