例如,我有一个这样的模型:
class Wheel(models.Model):
wheel = models.CharField(max_length=20)
class Vehicle(models.Model):
wheel = models.ForeignKey(Wheel)
当我制作新车时,我希望绿色加号出现在我的旁边 wheel field并允许我添加Wheel的新实例。我对django很新,所以我不知道是否可能。任何帮助表示赞赏!
答案 0 :(得分:5)
如果要在admin部分之外实现表单,则需要一个类似于django.contrib.admin.widgets.RelatedFieldWidgetWrapper的自定义窗口小部件包装器。用法示例:
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, )
)
在您的实施中,将“所有者”替换为您要链接的模型。
找到自定义窗口小部件包装器以及完整示例答案 1 :(得分:2)
检查小部件django.contrib.admin.widgets.RelatedFieldWidgetWrapper
。这是Django Admin用来添加功能性'+'标记的小部件,here
要在自定义表单中使用窗口小部件,您需要提供用于轮子添加页面的admin_site
参数。
答案 2 :(得分:0)
默认情况下,只有“editable = True”的字段才会添加到管理页面中:
<强> models.py 强>
class Wheel(models.Model):
wheel = models.CharField(max_length=20, editable=True)
class Vehicle(models.Model):
wheel = models.ForeignKey(Wheel, editable=True)