Django - 如何重新创建或导入django admin绿色加号以添加新的相关实例?

时间:2012-06-27 02:36:30

标签: django

例如,我有一个这样的模型:

class Wheel(models.Model):
    wheel = models.CharField(max_length=20)

class Vehicle(models.Model):
    wheel = models.ForeignKey(Wheel)

当我制作新车时,我希望绿色加号出现在我的旁边 wheel field并允许我添加Wheel的新实例。我对django很新,所以我不知道是否可能。任何帮助表示赞赏!

3 个答案:

答案 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, )
)

在您的实施中,将“所有者”替换为您要链接的模型。

您可以在 - https://gist.github.com/ebrelsford/5263306

找到自定义窗口小部件包装器以及完整示例

答案 1 :(得分:2)

检查小部件django.contrib.admin.widgets.RelatedFieldWidgetWrapper。这是Django Admin用来添加功能性'+'标记的小部件,here 要在自定义表单中使用窗口小部件,您需要提供用于轮子添加页面的admin_site参数。

答案 2 :(得分:0)

默认情况下,只有“editable = True”的字段才会添加到管理页面中:

ModelAdmin.fields

<强> models.py

class Wheel(models.Model):
    wheel = models.CharField(max_length=20, editable=True)

class Vehicle(models.Model):
    wheel = models.ForeignKey(Wheel, editable=True)